我有以下控制权。我想在某些事件触发器上更改背景颜色。我希望在某些事件点击时将此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");
答案 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/
它们非常易于使用/实施,并且完全符合您的要求。