1

最初に、問題のコンテキストを説明します。より良い方向に私を向けることができるかもしれないからです.

オブジェクトに取り消しとやり直しのようなシステムを実装する必要があります。オブジェクトには、一連の依存関係プロパティがあります。一部は double、int、string ですが、一部は DependencyObject 型でもあります。プロパティの値を変更する前に保存する必要があるため、CoerceValueCallback を追加しました。

public static readonly DependencyProperty MyBackgroundProperty =
        DependencyProperty.Register("MyBackground", typeof(MyCustomizableBackground),
            typeof(MyComponent), new UIPropertyMetadata(default(MyCustomizableBackground), null, new CoerceValueCallback(OnPropertyChanging)));

OnPropertyChanging では、変更する前に値を保存します。MyCustomizableBackground は、いくつかの依存関係プロパティを持つ DependencyObject です。

問題は、この場合、プロパティとしてカスタム オブジェクトがある場合、OnPropertyChanging メソッドはトリガーされませんが、共通の型がある場合はトリガーされることです。

後で編集: 質問の一部が非常に曖昧であることに気付き、別の質問をしました here . 問題の最初の部分で、ジュリアンは私をより良い方向に向けました。

4

1 に答える 1

1

プロパティが変更されたコールバックは、値の強制コールバックである使用した 3 番目のパラメーターではなく、コンストラクターの 2 番目のパラメーターです。

編集:コメントに応じて、 MyComponent がプロパティを所有する適切なタイプであることを再確認してください。DP をコピーして貼り付け、所有タイプを変更するのを忘れた後、しばらく前に同様の問題が発生したことを覚えています。

于 2010-05-17T10:39:10.957 に答える