2

我想SolidColorBrush在应用程序运行时从 c# 代码更改 xaml 中的颜色。(这是来自 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);

如何设置资源的颜色?

4

1 回答 1

1

我认为在 WPFDynamicResource基本上每次请求时都会创建一个新实例,并会重新评估资源依赖层次结构的变化。取决于你想要做什么 - 你会在你的情况下以不同的方式处理它。您可以更新样式/模板以更改基本颜色,您可以更改视觉状态以使它们响应会更改颜色的状态更改,您可以编写附加行为(直接使用附加属性或一些开源 WinRT 行为实现),您将在数据点上设置将根据事件或绑定属性更新画笔,您可以遍历可视化树以更新基于颜色的颜色,或者您可以创建两个几乎相同的具有不同颜色的重叠图表控件并更改通过更改图表控件的可见性来显示颜色。

于 2013-03-08T18:25:56.543 回答