Xamarin Form setter FontFamily ссылается на пользовательский шрифт в той же файловой теме - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь сослаться на шрифт в стиле из моей темы по умолчанию. Но я нахожусь с этой ошибкой, не находя решения на данный момент ...

DefaultTheme.xaml

<Style x:Key="EntryStyle" TargetType="Entry">
    <Setter Property="BorderColor" Value="{StaticResource Gray-300}"/>
    <Setter Property="TextColor" Value="{StaticResource Gray-900}"/>
    <Setter Property="PlaceholderColor" Value="{StaticResource Gray-400}"/>
    <Setter Property="FontFamily" Value="{StaticResource Montserrat-Regular}"/>
    <Setter Property="BackgroundColor" Value="{StaticResource Gray-White}"/>
</Style>

<OnPlatform x:Key="Montserrat-Regular" x:TypeArguments="x:String">
    <OnPlatform.Platforms>
        <On Platform="Android" Value="Montserrat-Regular.ttf#Montserrat-Regular" />
        <On Platform="iOS" Value="Montserrat-Regular" />
        <On Platform="UWP" Value="Assets/Montserrat-Regular.ttf#Montserrat-Regular" />
    </OnPlatform.Platforms>
</OnPlatform>

Это ошибка, которую я получаю:

Xamarin.Forms.Xaml.XamlParseException: Позиция 43:39 Статический ресурс не найден для ключа Montserrat-Regular

У вас есть идея, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Загружает ресурсы в порядке «первый пришел - первый вышел».

Поскольку вы определили ресурс шрифта позже, во время установки EntryStyle свойств он не найден.

Переместить Montserrat-Regular выше EntryStyle вы должны быть хороши до go.


<!-- 1st -->
<OnPlatform x:Key="Montserrat-Regular" x:TypeArguments="x:String">
    <OnPlatform.Platforms>
        <On Platform="Android" Value="Montserrat-Regular.ttf#Montserrat-Regular" />
        <On Platform="iOS" Value="Montserrat-Regular" />
        <On Platform="UWP" Value="Assets/Montserrat-Regular.ttf#Montserrat-Regular" />
    </OnPlatform.Platforms>
</OnPlatform>
<!-- 2nd -->
<Style x:Key="EntryStyle" TargetType="Entry">
    <Setter Property="BorderColor" Value="{StaticResource Gray-300}"/>
    <Setter Property="TextColor" Value="{StaticResource Gray-900}"/>
    <Setter Property="PlaceholderColor" Value="{StaticResource Gray-400}"/>
    <Setter Property="FontFamily" Value="{StaticResource Montserrat-Regular}"/>
    <Setter Property="BackgroundColor" Value="{StaticResource Gray-White}"/>
</Style>
0 голосов
/ 10 апреля 2020

Добро пожаловать в Винс!

Как вы можете видеть здесь , ваш DefaultTheme является глобальным стилем, поэтому для этого вам нужно использовать DynamicResource.

Тот же стиль, определенный в Ресурсный раздел, успешно работает.

Технически, просто измените эту строку на <Setter Property="FontFamily" Value="{DynamicResource Montserrat-Regular}"/>

...