Как динамически изменить ресурс BackgroundColor?

У меня есть следующий контроль. Я хочу изменить цвет фона для какого-либо события. Я хочу сделать это clrGray ресурс как цвет на каком-то событии клик.

Я пытался следующим образом, но это не сработало:(

XAM:

<local:RoundedFrame x:Name="MyFrame1" HeightRequest="16" IsVisible="True" BackgroundColor="{DynamicResource clrGreen}">

CS:

//On Some event
    //Not working
    MyFrame1.SetDynamicResource(MyFrame1.BackgroundColor, "clrGreen");

2 ответа

Решение

Используйте динамические ресурсы Xamarin.Forms. Ниже приведена ссылка на документацию Xamarin:

https://developer.xamarin.com/guides/xamarin-forms/user-interface/styles/dynamic/

Они очень просты в использовании / реализации и делают именно то, что вы хотите.

Вы можете изменить цвет динамически, как это: App.Current.Resources["yourColorKey"] = Color.FromHex("hexColor");

Пример:

Ваш файл App.xaml:

<Application.Resources>
        <!--  Application resource dictionary  -->

        <ResourceDictionary>
            <Color x:Key="backgroundColor">#0066B3</Color>
        </ResourceDictionary>

</Application.Resources>

Ваш файл xaml:

<StackLayout>

    <StackLayout
        Margin="10"
        BackgroundColor="{DynamicResource backgroundColor}"
        HeightRequest="30"
        WidthRequest="30" />

     <Button x:Name="btnColorChange" Text="Click me!" />

</StackLayout>

В вашем обработчике событий:

 private void OnBtnClicked(object sender, EventArgs e)
 {
     App.Current.Resources["backgroundColor"] = Color.FromHex("#F15A29");
 }
Другие вопросы по тегам