2011-04-26 57 views
1

我正在寻找一种方法来实质上给ResourceDictionary多个键中的项目。有没有办法做到这一点?ResourceDictionary中的别名或引用

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

当我打电话给TryFindResource("myTemplateViaAlias")我想让myTemplate出来。我想我可以自己创建一个AliasedResource类,并在代码中将其解引用时,如果有内置方式,我宁愿不这样做。

回答

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> 
+0

完美,谢谢。现在我只需要等待8分钟就可以接受。 – 2011-04-26 23:06:58

+0

嗯,从来没有尝试在动态资源中的数据寺庙,因为控制不知道它会得到哪些数据类型,它如何使用特定的动态资源? – 2011-04-26 23:10:28

+0

对于** UI **资源,动态资源在Blend中起作用。不加入字典就不会默认加载。 – 2011-04-26 23:11:23

0

没有办法,我知道做到这一点。

但是,如果您的目标是多个控件的多个模板,您可能会遇到这种错误的方式。

你可以有多个资源(数据模板和动态资源)使用相同的全局命名的键, 或默认键(控制类型)的风格, 然后采用不同的资源字典文件加载到每一个控制/区域/制表/ window, 在运行时。