【问题标题】:Dependency property precedence. I want local value to be overridable依赖属性优先级。我希望本地价值可以被覆盖
【发布时间】:2011-08-17 12:55:33
【问题描述】:

我正在编写一个自定义控件。它有一个依赖属性,由控件提供一个“默认”值。该值可以随时更改。

我希望能够通过样式或其他方式覆盖此值,但 WPF 强加的依赖属性优先级意味着我的本地默认值总是获胜。

在编写控件时有什么办法可以推迟到其他来源吗?

【问题讨论】:

    标签: wpf dependency-properties operator-precedence


    【解决方案1】:

    您可以尝试通过DependencyObject.ClearValue() 清除本地值。我认为你不能更改order of precedence for dependency properties

    【讨论】:

    • 非常感谢,但不幸的是,控件会定期更新本地值,因此任何清除都会重新设置。
    • @GazTheDestroyer:我想会是这样。请参阅我对您对依赖属性使用“UnsetValue”的回答的评论。
    • 不确定您的意思是未设置还是清除。 Clear 将被我的本地值覆盖,并且 unset 似乎是静态的,所以对我的每个实例控制值没有好处?
    【解决方案2】:

    我想我已经找到了解决办法。

    我现在公开两个属性。控件更新的“默认”控件和标准控件。在我的默认控件样式中,我将标准控件绑定到默认控件,以便它获取值,但仍然可以绑定到 xaml 中的其他内容。

    【讨论】:

    • 对于您的“默认”值,您是否考虑使用DependencyProperty 自己的UnsetValue 属性? msdn.microsoft.com/en-us/library/…
    • 能否请您发布您的解决方案的简单实现,至少以伪代码形式发布?我不知道如何配置绑定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2011-05-13
    • 2019-07-26
    • 2012-10-22
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多