在Windows 8应用程序中从c#代码更改资源颜色

我想在应用程序运行时从c#代码中更改xamlSolidColorBrush的颜色。 (这是WinRT XAML Toolkit的饼图,我想改变切片的颜色。)

 <charting:Chart.Palette> <charting:ResourceDictionaryCollection> <ResourceDictionary> <SolidColorBrush x:Key="MyBrush" Color="#4586d8"/> <Style x:Key="DataPointStyle" TargetType="Control"> <Setter Property="Background" Value="{StaticResource MyBrush}"/> </Style> </ResourceDictionary> </charting:ResourceDictionaryCollection> </charting:Chart.Palette> 

由于Win8应用程序中没有DynamicResource,所以我试图设置没有成功:

 Color yellow = Color.FromArgb(0xff, 0xff, 0xb9, 0x01); Application.Current.Resources["MyBrush"] = new SolidColorBrush(yellow); 

我怎样才能设置资源的颜色?

我认为在WPF DynamicResource基本上会创建一个新的实例,每次请求,并将重新评估资源依赖层次结构的变化。 取决于你想做什么 – 你的情况会有所不同。 您可以更新样式/模板以更改基本颜色,可以更改视觉状态以使这些状态响应状态更改,从而更改颜色,可以编写附加的行为(直接使用附加属性或一些开放源代码的WinRT行为实现),你可以设置你的数据点,根据事件或绑定属性更新画笔,你可以遍历视觉树来更新基于颜色,或者你可以创建两个几乎相同的,重叠的不同颜色的图表控件,并更改通过更改图表控件的可见性来改变颜色。 然后,也许你可以以某种方式将饼图数据点的刷子绑定到基础数据 – 我没有检查是否可能,但如果不是 – 你可以修改图表控件的代码给你功能(这是开源的力量!)