C# 可观察收集<&燃气轮机;集合已更改,但未启动
我在WPF应用程序中有一个datagrid,它绑定到一个ObservableCollection,如下所示C# 可观察收集<&燃气轮机;集合已更改,但未启动,c#,wpf,mvvm,C#,Wpf,Mvvm,我在WPF应用程序中有一个datagrid,它绑定到一个ObservableCollection,如下所示 <DataGrid ItemsSource="{Binding Spring.SpringData, Mode=OneWay}" /> INotifyCollectionChanged仅在实际修改集合时激发。这是指在集合中添加、删除、移动、替换或重置项目。当SpringData对象中的一个属性发生更改时,它不会激发 为了监听SpringData对象的更改,假设它实现了INot
<DataGrid ItemsSource="{Binding Spring.SpringData, Mode=OneWay}" />
INotifyCollectionChanged
仅在实际修改集合时激发。这是指在集合中添加、删除、移动、替换或重置项目。当SpringData
对象中的一个属性发生更改时,它不会激发
为了监听SpringData对象的更改,假设它实现了
INotifyPropertyChanged
,您需要将侦听器连接到每个项的PropertyChanged
事件。INotifyCollectionChanged
仅在实际修改集合时才会触发。这是指在集合中添加、删除、移动、替换或重置项目。当SpringData
对象中的一个属性发生更改时,它不会激发
为了监听SpringData对象的更改,假设它实现了
INotifyPropertyChanged
,您需要将侦听器连接到每个项的PropertyChanged
事件。对于有时更改的所有属性,使用单个处理程序非常有用。这是你可以做到的
句柄集合已更改,如上所述:
_SpringData = new ObservableCollection<SpringData>();
SpringData.CollectionChanged += PublishSpringChange;
为所有属性提供一个单独的处理程序是非常有用的,有时会发生更改。这是你可以做到的 句柄集合已更改,如上所述:
_SpringData = new ObservableCollection<SpringData>();
SpringData.CollectionChanged += PublishSpringChange;
有没有一种方法可以使INotifyCollectionChanged从SpringData中的事件中跳闸?有没有什么特殊的原因可以解释为什么要这样做?只从项中通知集合已更改的事件比让每个项单独处理事件更简单、更健壮。有没有一种方法可以使INotifyCollectionChanged跳闸从SpringData中的一个事件中?您想这样做有什么特别的原因吗?只从项中通知集合更改事件比让每个项单独处理事件更简单、更健壮。
_SpringData = new ObservableCollection<SpringData>();
SpringData.CollectionChanged += PublishSpringChange;
private void PublishSpringChange(object sender, NotifyCollectionChangedEventArgs e)
{
foreach (INotifyPropertyChanged added in e.NewItems)
{
added.PropertyChanged += SpringDataOnPropertyChanged;
}
foreach (INotifyPropertyChanged removed in e.OldItems)
{
removed.PropertyChanged -= SpringDataOnPropertyChanged;
}
}
private SpringDataOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{
//your code here
}