Xamarin.Forms — использование StaticResource внутри ResourceDictionary

У меня есть небольшое приложение, в котором у меня есть ContentPage с SfChat Syncfusion, я пытаюсь немного его настроить, поэтому я использую ResourceDictionary следующим образом:

<ContentPage.Resources>
        <syncTheme:SyncfusionThemeDictionary>
            <syncTheme:SyncfusionThemeDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <x:String x:Key="SfChatTheme">CustomTheme</x:String>
                    <x:String x:Key="SfChatIncomingMessageAuthorFontFamily">MontserratRegular</x:String>
                </ResourceDictionary>
            </syncTheme:SyncfusionThemeDictionary.MergedDictionaries>
        </syncTheme:SyncfusionThemeDictionary>
    </ContentPage.Resources>

Моя проблема в том, что свойству SfChatIncomingMessageAuthorFontFamily требуется шрифт из ресурсов моего приложения в качестве статического ресурса, так как же мне использовать {StaticResource MontserratRegular} вместо того, чтобы просто передавать имя шрифта в виде x:string?


person RedZ    schedule 14.10.2020    source источник
comment
Вы должны установить свойство FontFamily с SfChatIncomingMessageAuthorFontFamily определенным в ResourceDictionary как FontFamily="{StaticResource SfChatIncomingMessageAuthorFontFamily}"   -  person Leo Zhu - MSFT    schedule 14.10.2020
comment
@LeoZhu-MSFT, не могли бы вы предоставить более подробную информацию, пожалуйста?   -  person RedZ    schedule 14.10.2020


Ответы (1)


Например, используйте его на этикетке:

<ResourceDictionary>
    <OnPlatform
      x:Key="MediumFontFamily"
      x:TypeArguments="x:String"
      Android="sans-serif-medium"
      iOS="HelveticaNeue-Medium" />

</ResourceDictionary>

создать стили:

<Style x:Key="MyLabel" TargetType="Label">
   <Setter Property="FontFamily"
        Value="{StaticResource MediumFontFamily}" />
</Style>

затем используйте в метке:

<Label Style="{StaticResource MyLabel}" Text="Hello World" />
person Leo Zhu - MSFT    schedule 15.10.2020
comment
в документах syncfusion упоминается, что мне нужно изменить ResourceDictionary, поэтому я должен вставить шрифт staticresource в запись словаря - person RedZ; 15.10.2020
comment
Кажется, что класс SyncfusionThemeDictionary был предоставлен для автоматического слияния, когда вы определяете <x:String x:Key="SfChatIncomingMessageAuthorFontFamily">MontserratRegular</x:String>, управление синхронизацией будет использовать это семейство шрифтов (MontserratRegular). - person Leo Zhu - MSFT; 16.10.2020
comment
Привет @RedZ, если мы упомянем семейство шрифтов в строке, оно автоматически объединится с нужным свойством в SfChat. Дайте мне знать, на какой платформе вы столкнулись с проблемой? - person Karthik Rj; 21.10.2020