2

在 WPF 中,我有一些资源字典,其中包含用于我的应用程序中的面板和控件的样式。我一次又一次地重复使用相同的颜色。我实际上有 5 种颜色,它们为我的应用程序提供了一个很好的配色方案。

但是,如果我不想更改主题,我必须进入 RD 并更改那里的每种颜色。

我想在某个地方设置颜色,但不知道如何或在哪里。我试图在一个 RD 中放置一个颜色标签,但是当我在同一个 RD 中引用它时,Visual Studio 就崩溃了。

最好的解决方案是我可以将颜色作为应用程序本身的动态设置,这样用户甚至可以自己更改它。

4

2 回答 2

4

以下代码在 Silverlight 中工作,因此应该在 WPF 中工作(可能进行一些修改 - 我没有时间仔细检查它):

在您的资源中定义您的颜色:

<SolidColorBrush x:Key="MyNamedColor" Color="DarkRed"/>

然后定义一些样式:

<Style x:Key="MyTextBlockStyle" TargetType="TextBlock">
    <Setter Property="Foreground" Value="{StaticResource MyNamedColor}"/>
</Style>
<Style x:Key="MyLineStyle" TargetType="Line">
    <Setter Property="Stroke" Value="{StaticResource MyNamedColor}"/>
</Style>

然后在您的代码中(在 XAML 中或在后面的代码中)在您的所有 TextBlocks、Lines 等上使用这些样式。

然后,当您想更改颜色时,只需更新原始SolidColorBrush定义。

于 2010-06-10T12:19:12.930 回答
0

除了 ChrisF 的解决方案:如果您希望它在运行时是动态的,您可以使用 DynamicResource 并在运行时更改资源本身。

于 2010-06-10T12:28:45.140 回答