0

出于说明目的,假设我想创建一个名为 BizarroTextBox 的 WPF 文本框的子类,其中 IsReadOnly 属性与其默认行为具有相反的效果。

现在通常在非 WPF 世界中,对于假设的“文本框”控件,这将是相对微不足道的......

public class BizarroTextBox : TextBox
{
    public override bool IsReadOnly
    {
        get{ return !base.IsReadOnly; }
        set{ base.IsReadOnly = !value; }
    }
}

...但我不确定在处理 DependencyObjects 和 DependencyProperties 时如何/是否可以做类似的事情。

虽然我可以在我的子类中重新定义属性的元数据并使用 Coalesce 函数来反转该值,但我不知道有一种方法可以在返回时反转它。

您也不能简单地使用布尔反转转换器,因为只有一个对象不能同时是源和目标,除非您连接两个不同的属性,而我们不是。

您也不能在 CLR getter/setter 中执行此操作,因为它们是使用绑定时绕过的便捷方法。

如果他们有一种在路上合并的方法会容易得多,但我不知道有任何这样的事情。那么这可以做到吗?

4

0 回答 0