I have the following page:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="PhotoManager.MainPage">
<ScrollView>
<VerticalStackLayout
Padding="5,0"
Spacing="10">
<Image
Source="banner2.jpg"
HeightRequest="75"
Aspect="AspectFit"
SemanticProperties.Description="Organize My League" />
<Line Stroke="Black" X2="{Binding Width, Source={RelativeSource Self}}" HorizontalOptions="Fill" StrokeThickness="2" />
<ActivityIndicator x:Name="activityIndicator"
IsVisible="false"
IsRunning="True"
Color="{StaticResource NavigationBarColor}" ZIndex="1000"
VerticalOptions="Center" HorizontalOptions="Center"
WidthRequest="100" HeightRequest="100"/>
<Label
Text="Log On"
Style="{StaticResource Headline}"
SemanticProperties.HeadingLevel="Level1" />
<Label
Text="Username"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Enter your username." />
<Entry x:Name="TheUsername"
Placeholder="Enter Username"/>
<Label
Text="Password"
Style="{StaticResource SubHeadline}"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Enter your password." />
<Entry x:Name="ThePassword"
Placeholder="Enter Password"
IsPassword="true" />
<Button
x:Name="CounterBtn"
Text="Submit"
SemanticProperties.Hint="Log on"
Clicked="OnCounterClicked"
HorizontalOptions="Fill" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
The line:
<Line Stroke="Black" X2="{Binding Width, Source={RelativeSource Self}}" HorizontalOptions="Fill" StrokeThickness="2" />
Generates the subject warning. How do I resolve the warning?
If you break up your Binding
, we have
Width
, // where does Width come from? This is what .NET is thinkingSource={RelativeSource Self}
, // "What is Self?"<Line ...
, // Aha Self == LineThis means we need to specify x:DataType=Line
. Another way to look at it, we're telling .NET that Width
is Line's Width.
Perhaps, in future, an optimized compiler can deduce this information since, from your code snippet it is obvious that Width
comes from Line
. In more complex Binding
, however, you will have to help it out, that's what x:DataType
is for.
<Line Stroke="Black" X2="{Binding Width, x:DataType=Line, Source={RelativeSource Self}}" HorizontalOptions="Fill" StrokeThickness="2" />