请原谅我,因为我是新手。我正在使用xaml创建一个页面(因为该项目是xamarin表单)。在这个页面中,我有<Frame>
块。在这个框架块中,我有Image
和Label
,如下所示。
<Frame BorderColor="Black" Padding="16" Margin="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition Height="40" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<StackLayout HorizontalOptions="Start" Grid.Row="0" Grid.ColumnSpan="2">
<Label x:Name="game1Date" TextColor="Black" FontSize="14" Font="{StaticResource classicFont}"/>
</StackLayout>
<Image x:Name="flag1" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="1" Grid.Column="0"/>
<Image x:Name="flag2" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="1" Grid.Column="2"/>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center" Grid.Column="0" Grid.Row="2">
<Label x:Name="team1" HorizontalTextAlignment="Center" TextColor="{StaticResource gray}" FontSize="22"/>
</StackLayout>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center" Grid.Column="1" Grid.RowSpan="2">
<Label TextColor="{StaticResource gray}" Text="-" FontAttributes="Bold" FontSize="40"/>
</StackLayout>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center" Grid.Column="2" Grid.Row="2" >
<Label x:Name="team2" HorizontalTextAlignment="Center" TextColor="{StaticResource gray}" FontSize="22"/>
</StackLayout>
</Grid>
</Frame>
和资源字典
<ContentPage.Resources>
<ResourceDictionary>
<Color x:Key="orange">#ff8900</Color>
<Color x:Key="live">#ee4142</Color>
<Color x:Key="gray">#333000</Color>
<OnPlatform x:TypeArguments="x:String" x:Key="boldFont">
<On Platform="Android" Value="ConcourseT4-Bold.tff#Concourse T4-Bold" />
<On Platform="iOS" Value="ConcourseT4-Bold" />
</OnPlatform>
<OnPlatform x:TypeArguments="x:String" x:Key="normalFont">
<On Platform="Android" Value="ConcourseT4-Regular.tff#Concourse T4-Regular" />
<On Platform="iOS" Value="ConcourseT4-Regular" />
</OnPlatform>
<OnPlatform x:TypeArguments="x:String" x:Key="classicFont">
<On Platform="Android" Value="OpenSans.tff#Open Sans" />
<On Platform="iOS" Value="OpenSans" />
</OnPlatform>
</ResourceDictionary>
</ContentPage.Resources>
通过使用x:Name
属性,我为标签设置Text
,为图像设置Source
。
game1Date.Text = "asd";
team1.Text = "asd";
team2.Text = "asd";
flag1.Source = ImageSource.FromFile("flag1.png");
flag2.Source = ImageSource.FromFile("flag2.png");
该项目构建没有任何问题,但是,当我在iOS模拟器或Android模拟器中运行应用程序时,它崩溃了。抛出的例外是System.InvalidCastException
。也没有内在的例外。如果我从我的xaml文件中注释Frame块,应用程序运行没有任何问题。我不明白为什么抛出这个错误以及导致它的原因。
问题出在Font="{StaticResource classicFont}"
上。不应该使用的According to Microsoft。
要解决此错误,请执行FontFamily={StaticResource classicFont}"