开发者

Alias or Reference in ResourceDictionary

I'm looking for a way to essentially give an item in a ResourceDictionary multiple keys. Is there a way to do this?

<DataTemplate x:Key="myTemplate" ... />
<AliasedResource x:Key="myTemplateViaAlias" Target="myTemplate" OR_Target={StaticRe开发者_开发问答source myTemplate} />

When I call TryFindResource("myTemplateViaAlias") I want to get myTemplate out. I suppose I could create an AliasedResource class myself and dereference it in code when I get it out of the dictionary, but I'd rather not do that if there's a built-in way.


You can pipe resources through dynamic resources (note that crappy UI designers won't like it)

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


There is no way that I know of to do this.

However, if your goal is multiple templates for multiple controls, you may be going at this the wrong way.

You could have multiple resources (data templates and dynamic resources) with the same globally named key, or default key (control class type) for styles, then load a different resource dictionary file into every control/region/tab/window, during run time.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜