XAML中Frame的System.InvalidCastException

问题描述 投票:1回答:1

请原谅我,因为我是新手。我正在使用xaml创建一个页面(因为该项目是xamarin表单)。在这个页面中,我有<Frame>块。在这个框架块中,我有ImageLabel,如下所示。

<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块,应用程序运行没有任何问题。我不明白为什么抛出这个错误以及导致它的原因。

c# xaml xamarin.forms
1个回答
1
投票

问题出在Font="{StaticResource classicFont}"上。不应该使用的According to Microsoft

要解决此错误,请执行FontFamily={StaticResource classicFont}"

© www.soinside.com 2019 - 2024. All rights reserved.