通知ViewModel在另一个ViewModel、Devexpress、Winforms中发生了某些情况

通知ViewModel在另一个ViewModel、Devexpress、Winforms中发生了某些情况,winforms,mvvm,devexpress,Winforms,Mvvm,Devexpress,我的问题如下:当我在一个ViewModel中执行某些操作(在本例中是添加新学生)时,我希望在另一个ViewModel中执行某些操作(在本例中是调用RaisePropertyChanged) 在这种情况下,MainWindowViewModel的相应视图显示学员列表。 然后打开StudentWindowViewModel的相应视图,该视图用于在数据库中添加student。当我添加学生时,我希望它立即反映在我的学生列表中 [POCOViewModel()] public class MainWind

我的问题如下:当我在一个ViewModel中执行某些操作(在本例中是添加新学生)时,我希望在另一个ViewModel中执行某些操作(在本例中是调用RaisePropertyChanged)

在这种情况下,MainWindowViewModel的相应视图显示学员列表。 然后打开StudentWindowViewModel的相应视图,该视图用于在数据库中添加student。当我添加学生时,我希望它立即反映在我的学生列表中

[POCOViewModel()]
public class MainWindowViewModel
{

    // getting list of students
    public virtual List<Student> Students { get; set; } = MainWindowMethods.GetStudents();


    private readonly StudentWindowViewModel viewModel = new StudentWindowViewModel();
    public MainWindowViewModel()
    {
         viewModel.ItemsChanged += () =>
         {
             this.RaisePropertyChanged(x => x.Students);
         };
    }

}
这是我的代码,但它不会刷新学生列表

[POCOViewModel()]
public class MainWindowViewModel
{

    // getting list of students
    public virtual List<Student> Students { get; set; } = MainWindowMethods.GetStudents();


    private readonly StudentWindowViewModel viewModel = new StudentWindowViewModel();
    public MainWindowViewModel()
    {
         viewModel.ItemsChanged += () =>
         {
             this.RaisePropertyChanged(x => x.Students);
         };
    }

}

您似乎正在寻找
绑定列表

要将复杂的双向数据绑定到列表控件,如
ComboBox
ListBox
DataGridView
,需要使用控件的as
DataSource
实现。作为你可以信赖的选择。这样,基础数据源中的每个添加/删除都将立即反映在控件UI中

事实上,您在
BindingList
中添加/删除一个项目,列表将引发
ListChanged
事件,该事件会导致数据绑定控件(如
DataGridView
重置绑定)并反映UI中的更改


虽然使用
BindingList
允许在添加和删除项时更新绑定控件,但为了立即反映属性更改,应实现
T

是否正在查找
BindingList
?您的意思是将列表更改为BindingList可以解决问题?是的,但在将学生对象添加到列表时是否会激发INotifypropertyChanged?不会自动。事实上,在添加/删除项目时,将引发一个
ListChange
。如果您有兴趣在向学生列表添加项目时引发
PropertyChanged
,请确保您已订阅其
ListChanged
事件,并在处理程序中为
Students
引发
PropertyChanged
事件。请记住,如果您使用
DataGridView
进行数据绑定,它将自动使用
bidingList
ListChanged
事件并更新控件。但是,如果出于任何原因,您对
PropertyChanged
感兴趣,请遵循我在前面的注释中描述的内容。在上面的代码中,我引发了ItemsChanged事件,但在调试时,它始终为空。我想问题就在那里。我正在使用devexpress gridView