假设我绑定的对象有一个带有表示ResourceKey的字符串的属性 - 如何让StaticResource根据对底层对象的绑定动态获取它的ResourceKey?
我想要与此相同的东西
MyProperty="{StaticResource ResourceKey={Binding Path=MyProperty}}"
虽然这个编译,但它会失败抱怨它无法找到System.Windows.Data.Binding类型的键
如果基础值发生变化(例如DynamicResource)
,我不需要动态重新评估答案 0 :(得分:3)
我在这里找到了我想要的东西:
http://blog.functionalfun.net/2009/12/specifying-resource-keys-using-data_31.html
这是一个自定义标记扩展,其行为类似于常规绑定,但Path将指向将目标转换为ResourceKey的属性,然后绑定将返回资源!
我发现这非常有用!
答案 1 :(得分:0)
也可以在XAML代码
中完成<MyControl.Resources>
<Image x:Key="Image_1" Source="{StaticResource ResourceKey={x:Static img:ImageResourcesKeys.Image_1}}" x:Shared="false"/>
<Image x:Key="Image_2" Source="{StaticResource ResourceKey={x:Static img:ImageResourcesKeys.Image_2}}" x:Shared="false"/>
<Style TargetType="MyProperty">
<Style.Triggers>
<DataTrigger Binding="{Binding ImageType}" Value="Image_1">
<Setter Property="MyProperty" Value="{StaticResource Image_1}" />
</DataTrigger>
<DataTrigger Binding="{Binding ImageType}" Value="Image_2">
<Setter Property="MyProperty" Value="{StaticResource Image_2}" />
</DataTrigger>
</Style.Triggers>
</Style>
</MyControl.Resources>
您只需要一个字符串属性ImageType来选择您要使用的图像