如果我在控件的资源部分或外部资源字典中定义了某些资源,如何使用另一个键定义相同的资源?我的意思是如何定义仅引用另一个现有条目的资源条目?
更清楚地说,我希望有多个键引用一个资源,就像在编程语言中一样,我可以为一个常量定义多个名称。 可能吗?
我已经试过了
<Window.Resources>
<SolidColorBrush x:Key="Brush1" Color="#FFDF7B04"/>
<RadialGradientBrush x:Key="Brush2" GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="#5060FF40" Offset="0" />
<GradientStop Color="#5060FF40" Offset="0.1" />
<GradientStop Color="#3560FF40" Offset="0.4" />
<GradientStop Color="#0860FF40" Offset="0.8" />
<GradientStop Color="#0060FF40" Offset="1" />
</RadialGradientBrush>
<Style x:Key="CustomStyle" TargetType="UserControl">
<Style.Resources>
<StaticResource x:Key="TheBrush" ResourceKey="Brush1"/>
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="UserControl">
<Border x:Name="Border" BorderBrush="{StaticResource TheBrush}">
<!-- more content with several usings of {StaticResource TheBrush} -->
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
它甚至可以像我需要的那样在设计时工作。但甚至没有编译。
UPD。 为了更有意义我真正想要的:在上面的示例中,我需要资源 TheBrush 的原因是,有时我会决定将我的风格中的“TheBrush”外观替换为另一个画笔(比如 Brush2),我只想在一处进行这样的替换。但我无法更改“Brush1”的定义,因为它可能已经在许多其他控件中使用(实际上它可以放置在外部资源字典中并由另一个人维护)。
UPD 2. 很抱歉,由于我的英语不好,我自己找不到问题的答案,也无法正确提出我的问题。感谢 H.B.现在我看到我想要的关键词是“别名”。我正在寻找一种别名资源的方法,并且有很多类似的问题:
Alias or Reference in ResourceDictionary
Redefine/alias a resource in WPF?
等等
所以我的问题只是重复的,可以删除。
最佳答案
您只需使用 DynamicResource
来“重命名”,而不是使用 StaticResource
,但后者可能无法在所有情况下工作。
关于wpf - 如何用另一个键定义相同的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009373/