System.InvalidCastException для фрейма в XAML - PullRequest
0 голосов
/ 13 сентября 2018

Извините за мое невежество, так как я новичок.Я создаю страницу, используя 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 Simulator или эмуляторе Android, происходит сбой.Исключение составляет System.InvalidCastException.Там также нет внутреннего исключения.Если я прокомментирую блок Frame из моего файла xaml, приложение запустится без проблем.Я не понимаю, почему выдается эта ошибка и что ее вызывает.

1 Ответ

0 голосов
/ 13 сентября 2018

Проблема с Font="{StaticResource classicFont}". Согласно Microsoft , это не должно использоваться.

Чтобы устранить ошибку, выполните FontFamily={StaticResource classicFont}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...