我想分配一个资源,我已经有了第二个名称,类似于使用Styles的BasedOn属性。具体来说,我有一个笔刷,用于一组名为ForegroundColor的元素,我想在一个名为MouseOverBackgroundBrush的控制模板(ComboBox)中使用它。我想做这样的事情:
<ResourceCopy x:key="MouseOverBackgroundBrush" Value="{StaticResource ForegroundColor}" />
有没有办法做到这一点,或者在Xaml中有更好的方法?
这是一个在XAML中没有很好支持的功能。我相信你要么需要重复自己(并在需要更改画笔的任何时候更改两个位置),要么如果你不介意后面的代码,你可以完成这样的复制:
Resources["MouseOverBackgroundBrush"] = Resources["ForegroundColor"];
我不知道如何在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>
基本上,根据一些常见的颜色创建两个不同的笔刷。