説明のために、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 関数を使用して途中で値を反転することはできましたが、戻る途中で値を反転する方法がわかりません。
また、2 つの異なるプロパティを接続していない限り、ソースとターゲットの両方になることができないオブジェクトが 1 つしかないため、単純にブール反転コンバーターを使用することもできません。
バインディングを使用するときにバイパスされる便利なメソッドであるため、CLR ゲッター/セッターでも実行できません。
途中で合体する方法があればとても簡単ですが、私はそのようなことを知りません。それで、これはできますか?