2011-01-31 4 views
-2

Я нашел фрагмент кода, который использует ObservableCollection, но они могут использовать список или любые другие связанные классы. может ли кто-нибудь сказать мне, что является бенефитом использования ObservableCollection.относительно ObservableCollection в 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"}, 
     }; 

подробно обсудите. благодаря

ответ

3

ObservableCollection инвентарь INotifyPropertyChanged. Этот интерфейс предоставляет события, которые позволяют пользователям вашей коллекции быть уведомлены при изменении содержимого коллекции.

Это в основном используется при связывании в 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, потому что я никогда не использую его раньше ..... plzzz объясните. – Thomas

+3

+1 для этого ответа. -1 для ответа OP. –

+0

@Thomas, Есть много примеров онлайн. Вот один из них: http://www.eggheadcafe.com/software/aspnet/32416400/observablecollection--notification-when-item-has-changed-not-the-collection.aspx –

Смежные вопросы