0

アプリケーション(ユーザーがキャンバスに追加できる)にいくつかのコントロールがあり、それぞれにさまざまなプロパティ(主に依存関係プロパティ)があります。ユーザーは、プロパティグリッド(色、テキストなど)を介してプロパティを変更できます。

保存機能を実装しているので、ユーザーがキャンバスに変更を加えた場合は、離れる前にドキュメントを保存するように依頼します。現在、追加/削除/サイズ変更のような操作を追跡しています(IsChangedフラグをtrueに変更)。また、ユーザーがpropertygridを介してコントロールの色を変更した場合など、ユーザーが行ったプロパティの変更を追跡したいと思います。

簡単な解決策の1つは、プロパティごとにPropertyChangedCallbackを処理し、その中にフラグを設定することです。これに伴う問題は、各コントロールのプロパティごとにPropertyChangedCallbackを記述する必要があると同時に、追加されたすべての新しいプロパティが同じことを行うようにする必要があることです。

私の質問:たとえば、グローバルな場所で、プロパティの変更を追跡する他のより良い方法はありますか?

4

1 に答える 1

1

オブジェクト/クラスがDependencyObjectsの場合、OnPropertyChangedをオーバーライドするDependencyObjectから派生して、独自の「基本クラス」を作成できます。

http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.onpropertychanged.aspx

実装では、オブジェクトがシングルトンまたは関連する変更追跡マネージャークラスで変更されたことを登録してから、base.OnPropertyChangedを呼び出すことができます。

次に、すべてのオブジェクトを変更して、DependencyObjectではなくこの新しいクラスを実装します。プロパティが変更されると、コードが呼び出されます。

お役に立てば幸いです。

于 2010-07-06T07:02:25.400 に答える