0

次のように、オブザーバブルコレクションウィットがデータベースから満たされているsilvelightバインドのリストボックスがあります。

    var item = new AllCommentsPerMaterialCategoryItem { CommenterName = name,
    Text = project.Text, ID = project.ID, NoLike = (int)project.NoLike, SID = l, PID = i,
    VID = (int)project.MID, Date = project.date.ToString() };
    =_viewModel.AllCommentsPerMaterialCategoryItem.Add(item);=  }


    ObservableCollection<AllCommentsPerMaterialCategoryItem> GenreList =   
    _viewModel.AllCommentsPerMaterialCategoryItem; //result from a call to a WCF 
     service which returns the observable collection 
        GenreList1 = _viewModel.AllCommentsPerMaterialCategoryItem;
      mainMenuList.ItemsSource = GenreList;

誰かがデータベースに新しいアイテムを追加するたびに、リスト ボックスに自動的に入力 (更新 - 更新) され、新しいアイテムをリストに追加するたびに追加したい

Observable コレクションが内部的に「INoifyProbertyChange」を実装することを読みましたが、機能していません。また、それがこれらの要件を満たしているかどうかもわかりません。

アイデアはありますか?

4

1 に答える 1

0

ObservableCollection実際に内部的に実装しINotifyPropertyChangedます。ただし、データベースに移動することはありません。タイマーでデータベースを更新するか、通知する二重サービスを設定してから、ObservableCollection必要に応じてアイテムを追加/削除する必要があります。

これの最適な使用法は、 のインスタンスを返すプロパティを作成しObservableCollectionてそれにバインドし、変化に応じてコレクションを変更することです。コレクション全体を交換する場合は、ObservableCollectionコレクションが変更されたことを UI に通知することと、それを格納した変数が変更されたことを通知することの間には重要な違いがあるため、プロパティ自体が変更されたプロパティを通知することを確認する必要があります。別のコレクションに変更されました。後者は自動的には起こりません。

于 2012-06-20T21:16:33.893 に答える