如何动态改变BackgroundColor资源?

Dev*_*per 2 c# data-binding dynamicresource mvvm-light xamarin.forms

我有以下控制。我想更改某些事件触发器的背景颜色。我想clrGray在某些事件点击时将此资源设置为颜色。

我已经尝试过以下方法,但没有成功:(

XAM:

<local:RoundedFrame x:Name="MyFrame1" HeightRequest="16" IsVisible="True" BackgroundColor="{DynamicResource clrGreen}">
Run Code Online (Sandbox Code Playgroud)

CS:

//On Some event
    //Not working
    MyFrame1.SetDynamicResource(MyFrame1.BackgroundColor, "clrGreen");
Run Code Online (Sandbox Code Playgroud)

ale*_*vru 5

您可以像这样动态更改颜色:App.Current.Resources["yourColorKey"] = Color.FromHex("hexColor");

例子:

您的 App.xaml 文件:

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

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

</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

您的 xaml 文件:

<StackLayout>

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

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

</StackLayout>
Run Code Online (Sandbox Code Playgroud)

在您的事件处理程序中:

 private void OnBtnClicked(object sender, EventArgs e)
 {
     App.Current.Resources["backgroundColor"] = Color.FromHex("#F15A29");
 }
Run Code Online (Sandbox Code Playgroud)