如何在ResourceDictionary中设置一个条目值等于另一个已有条目值?
问题:在ResourceDictionary中复用已有资源的值
我遇到一个看似简单的问题,但找不到相关文档解决。我希望在ResourceDictionary中,将一个条目的值设置为字典中另一个条目的值。示例代码如下:
<x:String x:Key="MyMapPin"></x:String> <x:String x:Key="MyIconPickup">{?? MyMapPin}</x:String> <x:String x:Key="MyIconDestination">{?? MyMapPin}</x:String>
请问是否有办法让MyIconPickup和MyIconDestination的值与MyMapPin相同?
补充说明:我这么做的原因是,未来可能需要让MyIconPickup或MyIconDestination偏离MyMapPin的值,届时无需逐个修改所有图标实例;或者仅修改MyMapPin,就能改变所有基于它的图标,这属于基本的继承需求。
解决方案
你可以通过StaticResource或DynamicResource标记扩展实现资源复用,二者的区别在于是否支持动态更新:
- 使用StaticResource(静态引用,加载时解析,性能更优)
<x:String x:Key="MyMapPin"></x:String> <x:String x:Key="MyIconPickup">{StaticResource MyMapPin}</x:String> <x:String x:Key="MyIconDestination">{StaticResource MyMapPin}</x:String>
- 使用DynamicResource(动态引用,运行时可响应资源值变化,更匹配你“修改基准值同步更新所有派生图标”的需求)
<x:String x:Key="MyMapPin"></x:String> <x:String x:Key="MyIconPickup">{DynamicResource MyMapPin}</x:String> <x:String x:Key="MyIconDestination">{DynamicResource MyMapPin}</x:String>
额外说明
如果后续需要让某个图标脱离基准值,直接修改对应Key的资源内容即可,比如把MyIconPickup改成独立的字符串值,无需改动所有引用它的实例。
内容的提问来源于stack exchange,提问作者LairdPleng
相关产品推荐
相关产品推荐

