在WPF MVVM中的其他View中使用DataGrid内容

时间:2016-01-21 15:03:09

标签: c# wpf mvvm

我正在使用设计模式MVVM创建一个WPF应用程序,在下一步中,我需要在另一个Window中使用MainWindow中显示的DataGrid的内容。 有没有办法在ViewModels传递的其他Windows中使用在特定窗口中创建的项目?

1 个答案:

答案 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使用所需数据调用的事件。