Ресурсы приложения не работают с использованием статического ресурса / статического расширения - PullRequest
0 голосов
/ 10 октября 2019

Добрый день! Я использую Prism 7.2 вместе с Xamarin.Forms 4.2 и пытаюсь использовать внешний ресурс для шрифтов. Однако я определил их в ресурсах своего приложения и использовал в своем коде xaml, когда я пытаюсь использовать статическое расширение {x:Static} для значения Text в сочетании с Style, которое также имеет расширение статического ресурса {StaticResource} текст не работаетНиже приведен код, который я использую.

 <prism:PrismApplication.Resources>
    <ResourceDictionary>
        <OnPlatform x:Key="LineAwesomeFontFamily" x:TypeArguments="x:String">
            <On Platform="Android" Value="line-awesome.ttf#LineAwesome"/>
            <On Platform="iOS" Value="lineawesome"/>
        </OnPlatform>
        <Style x:Key="LineAwesomeFonts"
               TargetType="Label">
            <Setter Property="FontFamily"
                Value="{StaticResource LineAwesomeFontFamily }" />
        </Style>

        <Style TargetType="Button">
            <Setter Property="BackgroundColor" Value="Green"/>
        </Style>
    </ResourceDictionary>

</prism:PrismApplication.Resources>

Вызов его в представлении

<Label Text="{x:Static fonts:LineAwesomeFonts.Adjust}"
       Style="{StaticResource LineAwesomeFonts}"
       TextColor="Black">
</Label>

Если я попытаюсь по-другому

 <Label x:Name="testLabel"
        FontSize="28" TextColor="Black">
        <Label.FontFamily>
            <OnPlatform x:TypeArguments="x:String">
                <On Platform="Android" Value="line-awesome.ttf#LineAwesome"/>
            </OnPlatform>
        </Label.FontFamily>
  </Label>

и вызовуtestLabel на xaml.cs для того, чтобы он имел значение, он будет работать.

Есть идеи, что я делаю неправильно? При компиляции ошибок не обнаружено.

1 Ответ

0 голосов
/ 10 октября 2019

Хорошо, это моя вина.

 public App(IPlatformInitializer platformInitializer) : base(platformInitializer)
 {}


 protected override void OnInitialized()
 {
     InitializeComponent(); //moved this away from App constructor and put it here
     NavigationService.NavigateAsync("Test");
 }

Хотя это было странно, потому что мой InitializeComponent(); в другом проекте был на конструкторе App, а ресурсы работали как положено.

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