使用MVVM打开具有相同viewmodel的多个窗口

时间:2014-09-19 13:54:43

标签: c# wpf xaml mvvm

这个问题是参考此链接Opening new window in MVVM WPF 我想在某些服务中打开新窗口。 以下是我的代码

这是我从Viewmodel调用的Window服务

 public class WindowService:IWindowService
{
    public void ShowWindow(object viewModel)
    {

        var win = new Window {Content = viewModel};
        win.Show();
    }
}

以下是我的app.xaml代码

 <DataTemplate DataType="{x:Type viewModel:MainViewModel}" >
        <viewModel:ChildWindow />
    </DataTemplate>

现在这适用于具有不同视图模型的所有窗口。 但是当我想打开另一个使用相同视图模型的窗口但它们的视图不相同时,我无法在app.xaml中定义相同类型的数据模板。

如何打开多个具有相同viewmodel的新窗口? 我应该为每个窗口创建不同的视图模型吗?

1 个答案:

答案 0 :(得分:0)

我已经展示了另一种打开和关闭窗口的方法here

您可以添加DependencyProperty,例如DataContext OpenCloseWindowBehavior,使用它传递viewmodel,并将窗口的DataContext连接到行为代码中的此viewmodel。如果您需要更多帮助,请告诉我。

<local:OpenCloseWindowBehavior WindowType="local:YellowWindow" Open="{Binding YellowOpen, Mode=TwoWay}" DataContext="{Binding SomeViewModel}" />