为了便于说明,我想创建一个名为BizarroTextBox的WPF TextBox的子类,其中IsReadOnly属性具有其默认行为的相反效果。
现在通常在非WPF世界中,对于假设的“TextBox”控件,它会相对微不足道......
public class BizarroTextBox : TextBox
{
public override bool IsReadOnly
{
get{ return !base.IsReadOnly; }
set{ base.IsReadOnly = !value; }
}
}
...但我不确定如何处理DependencyObjects和DependencyProperties时甚至可以做类似的事情。
虽然我可以在我的子类中重新定义属性的元数据并使用Coalesce函数来反转输入的值,但我不知道在返回的路上反转它的方法。
你也不能简单地使用bool-inverting转换器,因为只有一个对象既不是源也不是目标,除非你连接两个不同的属性,我们不是。
您无法在CLR getter / setter中执行此操作,因为它们是使用绑定时绕过的便捷方法。
如果他们有一个合并退路方法会更容易,但我不知道任何这样的事情。那可以这样做吗?