2

ListBox を表示するアプリケーションがあります。これらの ListBox はデータにバインドされています。リストの 1 つはドアのリストで、もう 1 つのリストはユーザーのリストです。

ドアのリストは、データベースと通信する DataManager クラスから取得されます。ユーザーのリストは、いくつかの計算を行う他のクラスから取得されます。

2 つの ListBox を適切な ObservableList ゲッター セッターにバインドしました。

ドアの場合:

public ObservableList<Door> Doors
{
    get { return DataManager.Doors; }
}

そしてユーザーのために:

public ObservableList<User> Users
{
    get { return classLogic._users; }
}

ここで問題が発生します。ドアを追加または削除すると、UI のリストが更新されます。ユーザーを追加または削除しても、リストが更新されません。ビューを更新するには、ビューをリロード (アプリケーションを再起動) する必要があります。私は何が欠けていますか?なぜ機能しないのですか?

4

2 に答える 2

2


観察可能なコレクションは、更新される IsDoorClosed プロパティがある場合のように、各アイテムのプロパティに対して PropertyChanged を発生させます

要素を削除すると、Doors で CollectionChanged イベントが発生しますが、バインドされたプロパティ Doors で PropertyChanged イベントが発生しなかったため、UI は更新されません。

Doors の CollectionChanged ごとに、 Doors で PropertyChanged イベントを発生させる必要があります。

次の行に沿ったもの: これは psado コードです。これは、あなたの利益のために例としてここに書かれているので、構文エラーがないかチェックしてください。

 Doors.CollectionChanged += OnDoorsCollectionChanged; 


 private static void OnDoorsCollectionChanged(object sender , CollectionChangedEventArgs e)
 {
      PropertyChanged(sender,new PropertyChangedEventArgs("Doors"));
 }
于 2013-04-02T09:42:36.487 に答える