我正在使用设计模式MVVM创建一个WPF应用程序,在下一步中,我需要在另一个Window中使用MainWindow中显示的DataGrid的内容。 有没有办法在ViewModels传递的其他Windows中使用在特定窗口中创建的项目?
答案 0 :(得分:1)
您可以将MainViewModel作为对其他视图模型的引用传递。这样,您就可以从其他视图模型中访问MainViewModel中的数据。
public class MainViewModel
{
public AnotherViewModel avm { get; set; }
public int ImportantInfo { get; set; }
public MainViewModel()
{
avm = new AnotherViewModel(this);
}
}
public class AnotherViewModel
{
public MainViewModel mvm { get; set; }
public AnotherViewModel(MainViewModel mvm)
{
this.mvm = mvm;
MoreImportantINfo = this.mvm.ImportantInfo;
}
public int MoreImportantINfo { get; set; }
}
这种类型的引用只是一个可以在较小的项目中使用的示例。对于较大的项目,同样的想法是通过依赖注入(DI)实现的。查看此帖子,了解有关DI here
的更多信息另一种方法是使用事件。让任何需要Viewmodel
数据的MainViewModel
订阅MainViewModel
使用所需数据调用的事件。