使用MVVM打开具有相同ViewModel的多个窗口
本文关键字:ViewModel 窗口 MVVM 使用 | 更新日期: 2023-09-27 18:22:31
此问题是指在MVVM WPF中打开新窗口的链接
我想打开一些服务的新窗口。以下是我的代码
这是我从ViewModel 调用的窗口服务
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>
现在,这适用于所有具有不同ViewModel的窗口。但当我想打开另一个使用相同视图模型但视图不相同的窗口时,我无法在App.xaml中定义相同类型的数据模板。
如何打开多个具有相同ViewModel的新窗口?我应该为每个窗口创建不同的ViewModel吗?
我在这里展示了一种打开和关闭窗口的替代方法。
您可以将DependencyProperty
(例如DataContext
)添加到OpenCloseWindowBehavior
,使用它传递ViewModel,并在行为代码中将窗口的DataContext
连接到此ViewModel。如果你需要更多帮助,请告诉我。
<local:OpenCloseWindowBehavior WindowType="local:YellowWindow" Open="{Binding YellowOpen, Mode=TwoWay}" DataContext="{Binding SomeViewModel}" />