2011-01-31 5 views
-2

J'ai trouvé un morceau de code qui utilise ObservableCollection mais ils peuvent utiliser list ou toute autre classe liée à la collection. Quelqu'un peut-il me dire quel est le benifit d'utiliser ObservableCollection.concernant ObservableCollection dans C#

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"}, 
     }; 

veuillez discuter en détail. grâce

Répondre

3

ObservableCollection implémente INotifyPropertyChanged. Cette interface expose les événements qui permettent aux utilisateurs de votre collection d'être informés lorsque le contenu de la collection change.

Ceci est principalement utilisé lors de la liaison dans WPF, par exemple, disons que nous avons une ObservableCollection<string>:

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

et ce contrôle en XAML:

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

Le ComboBox montrera les cordes dans votre ObservableCollection. Jusqu'à présent, cela aurait aussi bien fonctionné avec un List<string>. Cependant, si vous ajoutez maintenant quelques chaînes à la collection, par exemple:

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

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

vous verrez que le contenu du ComboBox seront immédiatement mis à jour et la chaîne seront ajoutés à la liste des options. Tout cela est accompli en utilisant INotifyCollectionChanged.

7

L'avantage de ObservableCollection est qu'il déclenche l'événement CollectionChanged chaque fois que la collection est changé, et l'événement PropertyChanged à chaque fois que l'une des propriétés de la collection est modifiée. De la même manière, si vous voulez qu'un objet (qui n'est pas une collection) déclenche un événement chaque fois qu'une de ses propriétés change, vous devez le mettre en œuvre INotifyPropertyChanged.

+0

merci pour votre réponse ... pouvez-vous s'il vous plaît me faire comprendre à travers le code concernant l'avantage de ObservableCollection parce que je ne l'utilise jamais avant ..... plzzz expliquer. – Thomas

+3

+1 pour cette réponse. -1 pour la réponse OP. –

+0

@Thomas, Il y a beaucoup d'exemples en ligne. En voici un: http://www.eggheadcafe.com/software/aspnet/32416400/observablecollection--notification-when-item-has-changed-not-the-collection.aspx –

Questions connexes