如何动态更改 BackgroundColor 的资源?

How to dynamically change resource of 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");

您可以像这样动态更改颜色: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");
 }

使用Xamarin.Forms 动态资源。下面是 Xamarin 文档的 link:

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

它们很容易 use/implement,并且完全按照您的意愿行事。