относительно ObservableCollection в c # - PullRequest
0 голосов
/ 31 января 2011

Я нашел кусок кода, который использует ObservableCollection, но они могут использовать список или любые другие классы, связанные с коллекцией.Может кто-нибудь сказать мне, что является преимуществом использования ObservableCollection.

ObservableCollection<Employee> empData = new ObservableCollection<Employee> 
        {
            new Employee{Name="Diptimaya Patra", Contact="0000", 
                EmailID="diptimaya.patra@some.com", Country="India"},
            new Employee{Name="Dhananjay Kumar", Contact="00020", 
                EmailID="dhananjay.kumar@some.com", Country="India"},
            new Employee{Name="David Paul", Contact="1230", 
                EmailID="david.paul@some.com", Country="India"},
            new Employee{Name="Christina Joy", Contact="1980", 
                EmailID="christina.joy@some.com", Country="UK"},
            new Employee{Name="Hiro Nakamura", Contact="0000", 
                EmailID="hiro.nakamura@some.com", Country="Japan"},
            new Employee{Name="Angela Patrelli", Contact="0000", 
                EmailID="angela.patrelli@some.com", Country="Japan"},
            new Employee{Name="Zoran White", Contact="0000", 
                EmailID="diptimaya.patra@some.com", Country="Scotland"},
        };

пожалуйста, обсудите подробно.спасибо

Ответы [ 2 ]

7 голосов
/ 31 января 2011

Преимущество ObservableCollection заключается в том, что оно вызывает событие CollectionChanged при каждом изменении коллекции, а событие PropertyChanged - каждый раз, когда одно из свойствколлекция изменяется.

Аналогичным образом, если вы хотите, чтобы объект (который не является коллекцией) вызывал событие каждый раз, когда изменяется одно из его свойств, вы должны заставить его реализовать INotifyPropertyChanged.

3 голосов
/ 31 января 2011

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.

...