如何动态更改BackgroundColor的资源?

时间:2018-02-22 09:45:54

标签: c# data-binding xamarin.forms mvvm-light dynamicresource

我有以下控制权。我想在某些事件触发器上更改背景颜色。我希望在某些事件点击时将此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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用Xamarin.Forms动态资源。以下是Xamarin文档的链接:

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

它们非常易于使用/实施,并且完全符合您的要求。