5

我想分配一个我已经有第二个名称的资源,类似于使用 Styles 的 BasedOn 属性。具体来说,我有一个画笔,用于一组名为 ForegroundColor 的元素,我想在一个名为 MouseOverBackgroundBrush 的控件模板(ComboBox)中使用它。我想做这样的事情:

<ResourceCopy x:key="MouseOverBackgroundBrush" Value="{StaticResource ForegroundColor}" />

有没有办法做到这一点,或者在 Xaml 中有没有更好的方法来解决这个问题?

4

2 回答 2

3

这是一个在 XAML 中没有很好支持的功能。我相信您要么需要重复自己(并在需要更改画笔时随时更改两个位置),要么如果您不介意后面的代码,您可以像这样完成复制:

Resources["MouseOverBackgroundBrush"] = Resources["ForegroundColor"];
于 2008-11-03T21:11:30.640 回答
1

我不知道如何在 xaml 中复制资源(甚至可以完成吗?)就像你问的那样......但这是完成你想要做的事情的一种方法:

<Color x:Key="firstColor">#FFD97A7A</Color>
<Color x:Key="secondColor">#FFF4BFBF</Color>
<LinearGradientBrush x:Key="firstGradientBrush" EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="{DynamicResource firstColor}" Offset="0"/>
    <GradientStop Color="{DynamicResource secondColor}" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="secondGradientBrush" EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="{DynamicResource firstColor}" Offset="0"/>
    <GradientStop Color="{DynamicResource secondColor}" Offset="1"/>
</LinearGradientBrush>

基本上,根据一些常见的颜色创建两个不同的画笔。

于 2008-11-03T21:17:36.777 回答