0

IEditableObjectを実装するクラスがありますが、バインディングのソースが更新されたときにBeginEdit()を自動的に呼び出すことができるかどうか疑問に思っていますか?

考えられるシナリオは2つあります。

  1. オブジェクトはデータベースを介して入力されます。この場合、BeginEdit()を呼び出したくありません。
  2. オブジェクトは、ユーザーが入力フィールドを介して入力します。この場合、ソースが更新されたときに自動的にBeginEdit()を呼び出したいと思います(双方向バインディングとINotifyPropertyChangedを使用します)。

プロパティが変更されたときにBeginEdit()を呼び出すことを検討していましたが、データベースからの入力時にBeginEdit()が呼び出されたくないため、最初のシナリオではうまくいきません。

4

1 に答える 1

0

オブジェクト ポピュレーションのソースを特定する方法が必要です。それを行うenum可能性があり、その後PropertyChanged、プロパティが変更された原因を確認し、それに基づいて、呼び出すBeginEdit()かどうかを確認できます。

Enum PopulateSource
{
   Database = 0,
   User
}

データベースから更新するときは、Enum を に設定しますPopulateSource.Database。ユーザーが変更したために変更された場合は、 に設定しPopulateSource.Userます。これで、PropertyChanged でこの変数の状態を確認して、 を呼び出すかどうかを決定できますBeginEdit()

于 2010-02-18T15:54:02.507 に答える