wpf - 如何用另一个键定义相同的资源?

标签 wpf xaml xaml-resources

如果我在控件的资源部分或外部资源字典中定义了某些资源,如何使用另一个键定义相同的资源?我的意思是如何定义仅引用另一个现有条目的资源条目?

更清楚地说,我希望有多个键引用一个资源,就像在编程语言中一样,我可以为一个常量定义多个名称。 可能吗?

我已经试过了

<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

Aliasing Resources (WPF)

Redefine/alias a resource in WPF?

等等

所以我的问题只是重复的,可以删除。

最佳答案

您只需使用 DynamicResource 来“重命名”,而不是使用 StaticResource,但后者可能无法在所有情况下工作。

关于wpf - 如何用另一个键定义相同的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009373/

相关文章:

wpf - 将数据模板绑定(bind)到 ContentControl 的内容

wpf - 正确单击数据网格中的按钮时,Telerik RadGridView 选定项绑定(bind)不起作用

c# - 在 WPF 中自定义 BulletChrome 元素

wpf - 更改 WPF 窗口的启动位置

wpf - DataGrid 列调整大小,调整 Grid ColumnDefinitions 的大小

wpf - 根据另一个下拉列表中的选择限制一个下拉列表中的项目

c# - Caliburn Micro - 从模型类的 ItemSource 绑定(bind)自动创建 ViewModel 对象?

c# - 如何使用 XAML 资源作为 Mahapps.Metro 标题栏中的图标?

c# - 没有资源 key 时,如何在应用的DataTemplate中获取根元素?