ResourceDictionary中的别名或引用

时间:2011-04-26 22:59:22

标签: wpf resources reference alias resourcedictionary

我正在寻找一种基本上在ResourceDictionary多个键中提供项目的方法。有没有办法做到这一点?

<DataTemplate x:Key="myTemplate" ... />
<AliasedResource x:Key="myTemplateViaAlias" Target="myTemplate" OR_Target={StaticResource myTemplate} />

当我致电TryFindResource("myTemplateViaAlias")时,我想把myTemplate拿出来。我想我可以自己创建一个AliasedResource类,并在我从字典中取出它时在代码中取消引用它,但如果有内置方式,我宁愿不这样做。

2 个答案:

答案 0 :(得分:3)

您可以通过动态资源管道资源(请注意,糟糕的UI设计师不会喜欢它)

<Color x:Key="color">Red</Color>
<DynamicResource x:Key="mycolor" ResourceKey="color"/>
<Rectangle Width="100" Height="100">
    <Rectangle.Fill>
        <SolidColorBrush Color="{StaticResource color}"/>
    </Rectangle.Fill>
</Rectangle>
<Rectangle Width="100" Height="100">
    <Rectangle.Fill>
        <SolidColorBrush Color="{StaticResource mycolor}"/>
    </Rectangle.Fill>
</Rectangle>

答案 1 :(得分:0)

我无法做到这一点。

但是,如果您的目标是多个控件的多个模板, 你可能会走错路。

您可以拥有多个具有相同全局命名密钥的资源(数据模板和动态资源), 或样式的默认键(控件类类型), 然后将不同的资源字典文件加载到每个控件/区域/选项卡/窗口, 在运行期间。