Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使窗体重新检查ModelView_C#_Wpf - Fatal编程技术网

C# 使窗体重新检查ModelView

C# 使窗体重新检查ModelView,c#,wpf,C#,Wpf,我有一个使用ModelView的WPF表单。此ModelView具有项目的列表。问题是,当我将列表中的某个项更改为时,表单继续保留旧项 是否有人知道我如何通知表单,他必须使用ModelView更新其数据?使用observeCollection并在ViewModel中实现inotifPropertyChanged 示例 如果您有一个人员列表,请将该列表设置为一个可观察的集合 问题是在修改当前列表或列表中的某个项目时没有更新?我有一个数组属性,其中填充了列表的数据。当我在列表中添加一个项目时,表单中

我有一个使用
ModelView
的WPF表单。此
ModelView
具有项目的
列表。问题是,当我将列表中的某个项更改为时,表单继续保留旧项


是否有人知道我如何通知表单,他必须使用
ModelView
更新其数据?

使用
observeCollection
并在ViewModel中实现
inotifPropertyChanged

示例

如果您有一个人员列表,请将该列表设置为一个可观察的集合


问题是在修改当前列表或列表中的某个项目时没有更新?我有一个数组属性,其中填充了列表的数据。当我在列表中添加一个项目时,表单中什么也没有发生。那么,Meleak回答的前半部分就是你需要的。
public class MyViewModel : INotifyPropertyChanged
{
    private ObservableCollection<Person> m_persons;
    public ObservableCollection<Person> Persons
    {
        get
        {
            return m_persons;
        }
        set
        {
            m_persons = value;
            OnPropertyChanged("Persons");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
public class Person : INotifyPropertyChanged
{
    private string m_name;
    public string Name
    {
        get
        {
            return m_name;
        }
        set
        {
            m_name = value;
            OnPropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}