【发布时间】:2011-09-03 10:19:15
【问题描述】:
我有一个包含只读 DependencyProperty 的类。从这个类中,我想将只读DependencyProperty 绑定到另一个类的另一个只读DepenendencyProperty(从代码创建绑定)。
有没有可能做到这一点? SetBinding() 似乎没有将DependencyPropertyKey 作为参数的重载? BindingOperations-class 似乎都没有提供这样的功能。
问题也可以表述为:如果我有DependencyPropertyKey,我可以为只读DependencyProperty 创建绑定吗?
【问题讨论】:
-
这应该如何工作?如果双方都是只读的,那么无论如何 OneWay 都不应该工作,不是吗?
-
@H.B.不,因为我有只读 DependencyProperty(DependencyPropertyKey)的键,所以从我的班级的角度来看,它不是只读的。仅限于课外。类似于 CLR-Property 的私有设置器 - 它可以从类内部访问,但对于其他类,它是只读属性。 msdn.microsoft.com/en-us/library/…
-
我明白了;不知何故,我怀疑它是否可以完成,您可以轻松注册属性更改回调并手动设置值。
-
@H.B.我也怀疑,但也许有人知道方法。 PropertyChangedCallback 并不是一个真正的选项,因为它位于问题的另一端。我可以使用 DependencyPropertyDescriptor.AddValueChanged 来做到这一点,但据我所知,如果我不取消注册,这会很快导致内存泄漏,并且如果可能的话,我想避免这种取消注册代码。它使代码更容易出错。
-
@Alex Maker:不是只读的 DP?在这种情况下,只读状态的优势就丧失了。还是我误解了你的建议?
标签: wpf data-binding dependency-properties