デザイナーによってトリガーされるプロパティ変更の検出
実行時に IsClosed プロパティの値を設定すると、想定どおりに OnIsClosedChanged() メソッドが呼び出されます。 。ただし、デザイナーが XAML でプロパティを設定すると、メソッドは呼び出されないままになります。これは、XAML またはその他の非ランタイム コンテキストで設定された依存関係プロパティがセッター メソッドをバイパスするためです。
この問題に対処するには、プロパティ メタデータを使用して PropertyChangedCallback を登録できます。このコールバックを使用すると、プロパティの値が変更されたときに実行するカスタム動作を指定できます。
public static readonly DependencyProperty IsClosedProperty = DependencyProperty.Register( "IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender, (o, e) => ((GroupBox)o).OnIsClosedChanged()));
このコードは、IsClosedProperty という名前の新しい依存関係プロパティを作成し、OnIsClosedChanged() メソッドを実行するプロパティ メタデータ コールバックを登録します。プロパティ値が変更されたとき。この変更により、ランタイムと XAML プロパティの更新の両方が目的の動作をトリガーし、UI が適切に応答するようになります。
以上がXAML で設定したときに依存関係プロパティのセッターが起動しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。