C# 打开包含ViewModel作为参数的窗口

C# 打开包含ViewModel作为参数的窗口,c#,wpf,mvvm,window,viewmodel,C#,Wpf,Mvvm,Window,Viewmodel,我需要使用FlowDocumentScrollViewer来显示报告。因为FlowDocument不是最容易使用的控件,所以我需要从视图的代码隐藏中的另一个ViewModel访问两个可观的集合 当我点击菜单打开窗口时,我会发送一条消息,打开窗口 case "ShotListReportView": var ShotListReportWindow = new ShotListReportView(); ShotListReportWindow.Show();

我需要使用FlowDocumentScrollViewer来显示报告。因为FlowDocument不是最容易使用的控件,所以我需要从视图的代码隐藏中的另一个ViewModel访问两个可观的集合

当我点击菜单打开窗口时,我会发送一条消息,打开窗口

case "ShotListReportView":
      var ShotListReportWindow = new ShotListReportView();
      ShotListReportWindow.Show();
      break;
新的ShotListReportView()出现错误:不接受0个参数

这是因为在窗口的构造函数中,我有一个ViewModel作为参数,我需要它来生成报告

public ShotListReportView(ShotListViewModel ShotListViewModel)
{
    ShotList = ShotListViewModel.AllShots;
    SceneList = ShotListViewModel.SceneCollectionView;

    InitializeComponent();
}
public ListCollectionView SceneList { get; set; }
public ObservableCollection<Shot> ShotList { get; set; }
public ShotListReportView(ShotListViewModel ShotListViewModel)
{
ShotList=ShotListViewModel.AllShots;
SceneList=ShotListViewModel.SceneCollectionView;
初始化组件();
}
公共ListCollectionView场景列表{get;set;}
公共ObservableCollection快照列表{get;set;}
我之所以不在此窗口中使用ViewModel,是因为我需要使用FlowDocument并在代码隐藏中对其进行样式设置


如何使用参数打开窗口,或者如何访问保存所需可观察集合的ViewModel?

如果您只想打开窗口,只需添加ShotListReportView的空构造函数即可。您已经设计了许多类型。设计不符合您的要求,您正在询问人们如何为您的设计找到解决方法。我遗漏了什么吗?@Joseph和empty构造函数确实会打开窗口,但它不会给我访问集合的权限,因为我需要调用另一个包含参数的方法来调用我需要的ViewModel。我不知道如何用这个方法来表达这个论点。这就是现在的问题。你的应用程序中是否有一个主视图模型概念。@Joseph否我没有我有几个用户控件的窗口,每个控件都有自己的视图模型。