ObservableCollection <> CollectionChanged未触发

PlT*_*lor 1 c# wpf mvvm

我在WPF应用程序中有一个数据网格,该数据网格像这样绑定到ObservableCollection

<DataGrid ItemsSource="{Binding Spring.SpringData, Mode=OneWay}" />
Run Code Online (Sandbox Code Playgroud)

我的数据显示正常,我可以编辑网格中的数据,但是当我手动编辑网格中的数据时,它不会触发PublishSpringChange事件。基础数据发生更改,但事件未触发,我还缺少什么?

使用具有以下内容的Spring模型

public class Spring : INotifyPropertyChanged
{

    private ObservableCollection<SpringData> _SpringData;

    public ObservableCollection<SpringData> SpringData
    {
        get { return _SpringData; }
    }

     public Spring()
    {
        ....

        _SpringData = new ObservableCollection<SpringData>();
        SpringData.CollectionChanged += PublishSpringChange;

       ...
    }
    private void PublishSpringChange(object sender, NotifyCollectionChangedEventArgs e)
    {
        // Code that does not run!
    }
}
Run Code Online (Sandbox Code Playgroud)

带有一个SpringData类

public class SpringData: BindableBase
{
    private double _force;
    private double _displacement;

    public SpringData(double displacement, double force)
    {
        Displacement = displacement;
        Force = force;
    }

    public double Displacement
    {
        get { return _displacement; }
        set { SetProperty(ref _displacement, value); }
    }

    public double Force
    {
        get { return _force; }
        set { SetProperty(ref _force, value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

Che*_*ron 6

INotifyCollectionChanged仅在您实际修改集合时触发。这是您在集合中添加,删除,移动,替换或重置项目的时间。SpringData更改对象中的属性之一时,不会触发。

为了侦听SpringData对象的更改(假设已实现)INotifyPropertyChanged,您将需要将侦听器与PropertyChanged每个项目的事件联系起来。