Есть ли способ получить доступ к статическому ресурсу в моем коде C #? - PullRequest
0 голосов
/ 06 октября 2018

В моем App.XAML у меня есть это:

<Application xmlns:converters="clr-namespace:Japanese" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Japanese.App">
<Application.Resources>
        <Color x:Key="TextColor1">#123456</Color>

Я могу получить доступ к этому значению в XAML следующим образом:

<Style TargetType="Label">
        <Setter Property="TextColor" Value="{StaticResource TextColor1}" />
</Style>

Но есть ли способ, которым я могу получить доступэто в моем бэкэнде C #

vm.C1BtnLabelTextColor = phrase.C1 == true ? Color.FromHex("#123456") : Color.FromHex("#0000FF");

Например, здесь я хотел бы заменить:

Color.FromHex("#123456")

значением StaticResource

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

ResourceDictionary - это репозиторий для ресурсов, которые используются приложением Xamarin.Forms.Типичные ресурсы, которые хранятся в ResourceDictionary, включают стили, шаблоны элементов управления, шаблоны данных, цвета и конвертеры.

В XAML ресурсы, которые хранятся в ResourceDictionary, могут затем извлекаться и применяться к элементам с помощью StaticResource.расширение разметки.В C # ресурсы также могут быть определены в ResourceDictionary, а затем извлечены и применены к элементам с помощью индексатора на основе строк.Однако использование ResourceDictionary в C # дает мало преимуществ, поскольку общие объекты можно просто сохранять в виде полей или свойств и получать к ним прямой доступ без необходимости сначала извлекать их из словаря.

Вкратце: ResourceDictionary - это Dictionary.Чтобы прочитать значение из Dictionary, вы должны указать Key.В вашем случае Key - это "TextColor1".Таким образом, используя C #, вы можете прочитать значение из Application.Resources:

var txtColor1 = (Color) Application.Current.Resources["TextColor1"];

Обратите внимание, что вы должны привести возвращаемое значение к желаемому типу, потому что Dictionary является «универсальным».

Вы также можете создать Extension Method, если вам придется повторно использовать его в своем проекте.

Источник: Официальная документация

0 голосов
/ 06 октября 2018

Вы можете получить доступ так:

Application.Current.Resources["TextColor1"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...