2011-01-31 4 views
-2

ObservableCollectionを使用するコードが見つかりましたが、リストやその他のコレクション関連のクラスを使用できます。誰でもObservableCollectionを使うことの恩恵が何であるか教えてください。に関するObservableCollectionについて#

ObservableCollection<Employee> empData = new ObservableCollection<Employee> 
     { 
      new Employee{Name="Diptimaya Patra", Contact="0000", 
       EmailID="[email protected]", Country="India"}, 
      new Employee{Name="Dhananjay Kumar", Contact="00020", 
       EmailID="[email protected]", Country="India"}, 
      new Employee{Name="David Paul", Contact="1230", 
       EmailID="[email protected]", Country="India"}, 
      new Employee{Name="Christina Joy", Contact="1980", 
       EmailID="[email protected]", Country="UK"}, 
      new Employee{Name="Hiro Nakamura", Contact="0000", 
       EmailID="[email protected]", Country="Japan"}, 
      new Employee{Name="Angela Patrelli", Contact="0000", 
       EmailID="[email protected]", Country="Japan"}, 
      new Employee{Name="Zoran White", Contact="0000", 
       EmailID="[email protected]", Country="Scotland"}, 
     }; 

詳しく検討してください。ありがとう

答えて

3

ObservableCollectionINotifyPropertyChangedを実装しています。このインターフェイスは、コレクションの内容が変更されたときにコレクションのコンシューマに通知するイベントを公開します。

これは主にWPFに結合する場合、例えば我々はObservableCollection<string>を持っているとしましょう使用されます。

ObservableCollection<string> MyStrings 
{ 
    get 
    { 
     // return a collection with some strings here 
    } 
} 

とXAMLでこのコントロール:

<ComboBox ItemsSource="{Binding MyStrings}" /> 

ComboBoxは、あなたの内側の文字列が表示されますObservableCollection。これまでのところ、これはList<string>でもうまくいきました。しかし、あなたは今、たとえば、コレクションにいくつかの文字列を追加する場合:

<Button Click="AddSomeStrings" Content="Click me!" /> 

private void AddSomeStrings(object sender, RoutedEventArgs e) 
{ 
    this.MyStrings.Add("Additional string!"); 
} 

あなたはComboBoxの内容が即座に更新され、文字列は、オプションのリストに追加されていることがわかります。これはすべてINotifyCollectionChangedを使用して達成されます。

7

ObservableCollectionの利点は、コレクションが変更されるたびにCollectionChangedイベントが発生し、コレクションのプロパティのいずれかが変更されるたびにPropertyChangedイベントが発生することです。

同様に、オブジェクト(コレクションではない)がそのプロパティのいずれかが変更されるたびにイベントを発生させたい場合は、INotifyPropertyChangedを実装する必要があります。

+0

お返事ありがとうございます...私はObservableCollectionの利点について私がコードを理解できるようにしてください。この答えは – Thomas

+3

+1です。 OPレスポンスは-1です。 –

+0

@Thomas、オンラインで多くの例があります。これは1つです:http://www.eggheadcafe.com/software/aspnet/32416400/observablecollection--notification-when-item-has-changed-not-the-collection.aspx –

関連する問題