gpt4 book ai didi

wpf - 在 DynamicResource 上使用 BasedOn 样式属性

转载 作者:行者123 更新时间:2023-12-03 10:26:52 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以将 wpf 样式的 basedOn 属性与动态资源一起使用。例如

<Style BasedOn="{DynamicResource somestyle}">
<Setter Property="SomeProp" Value="SomeValue"/>
</Style>

这例如抛出一个错误,表明动态资源与 BaseOn 样式结合使用是不可能的。
我想知道怎么会有人这样做?
谢谢

最佳答案

我认为主要原因是密封的物体。如果您有样式层次结构:

       Style A
/ \
Style A1 Style A2

这可能不是一个困难的场景。您引用 StyleA使用动态资源,因此每当该资源发生变化时, Style A1Style A2应该改变他们的 BasedOn属性(property)。但是,一旦在您的应用程序中使用了 Style,它就会成为一个密封对象。 Style A变得不可变。

您可以使用的一种解决方法是:
  • Style A需要改变。
  • 创建一个新的 Style 对象,它将成为新的 Style A资源。
  • 创建新版本Style A1Style A2 .您需要编写一个复制过程来复制所有 Setters , Resources等设置BasedOnStyle A的新版本.
  • 更新资源集合,以便在其中包含三种新样式。
  • {DynamicResource StyleA1}{DynamicResource StyleA2}现在应该知道这些资源发生了变化(从第 4 步开始)并自动更新任何引用。

    请注意,这是一个非常简单的场景。现实世界风格的层次结构可能更复杂,尤其是当它们分布在多个文件中并且来自合并的字典时。

    希望我理解你的问题并提供帮助。

    关于wpf - 在 DynamicResource 上使用 BasedOn 样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/585429/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com