DependencyObjectsとDependencyPropertiesの調査を続けているときに、私が遭遇した予期しない動作を誰かが説明してくれることを願っています。
次の単純なクラスがあるとします。
class SomeClass : DependencyObject {
}
次のようなコードを楽しく書くことができます。
public static void Test() {
SomeClass a = new SomeClass();
Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty));
a.SetValue(EllipseGeometry.RadiusXProperty, 3.24 );
Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty));
}
これにより、次の出力が得られます。
0
3.24
私のクラスにはEllipseGeometryクラスと関係のあるものはなく、EllipseGeometry.RadiusXPropertyプロパティの所有者としてクラスを追加したり、RegisterAttached()を使用したりしていないのに、なぜこれが機能するのですか?フレームワークがエラーを発生させることなく、DOにDPを非常に喜んで追加できるようです。
他の誰かがこの奇妙な行動を見つけますか?「このプロパティをこのオブジェクトに登録していません」という行に沿って、何らかの形の例外が予想されました...この方法でDPをDOに追加する特定の用途があるかどうかについて、ガイドをいただければ幸いです。この動作を許可する目的を理解することはできません。
どうもありがとう、マット