我想知道是否有一种方法可以将 wpf 样式的 basedOn 属性与动态资源一起使用。例如
<Style BasedOn="{DynamicResource somestyle}">
<Setter Property="SomeProp" Value="SomeValue"/>
</Style>
这例如抛出一个错误,表明动态资源与 BaseOn 样式结合使用是不可能的。
我想知道怎么会有人这样做?
谢谢
最佳答案
我认为主要原因是密封的物体。如果您有样式层次结构:
Style A
/ \
Style A1 Style A2
这可能不是一个困难的场景。您引用
StyleA
使用动态资源,因此每当该资源发生变化时,Style A1
和 Style A2
应该改变他们的BasedOn
属性(property)。但是,一旦在您的应用程序中使用了 Style,它就会成为一个密封对象。 Style A
变得不可变。您可以使用的一种解决方法是:
Style A
需要改变。 Style A
资源。 Style A1
和 Style A2
.您需要编写一个复制过程来复制所有 Setters
, Resources
等设置BasedOn
到Style A
的新版本. {DynamicResource StyleA1}
和 {DynamicResource StyleA2}
现在应该知道这些资源发生了变化(从第 4 步开始)并自动更新任何引用。请注意,这是一个非常简单的场景。现实世界风格的层次结构可能更复杂,尤其是当它们分布在多个文件中并且来自合并的字典时。
希望我理解你的问题并提供帮助。
关于wpf - 在 DynamicResource 上使用 BasedOn 样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/585429/