【问题标题】:How to dynamically change resource of BackgroundColor?如何动态更改 BackgroundColor 的资源?
【发布时间】:2018-08-02 02:39:07
【问题描述】:

我有以下控制权。我想在某些事件触发器上更改背景颜色。我想将此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");

【问题讨论】:

  • 您能否详细说明您的问题?您是否希望在更改“clrGreen”键的值时简单地更改框架的背景颜色?

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


【解决方案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");
 }

【讨论】:

    【解决方案2】:

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

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

    它们非常易于使用/实施,并且完全按照您的意愿行事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多