Wpf 关闭与棱镜区域管理器的对话框
我有一个WPF/PRISM应用程序,其中我使用以下代码打开了一个窗口:Wpf 关闭与棱镜区域管理器的对话框,wpf,mvvm,prism,Wpf,Mvvm,Prism,我有一个WPF/PRISM应用程序,其中我使用以下代码打开了一个窗口: RegionManager.RequestBlockingDialogNavigate(MyViewModel); 如何在不使用代码隐藏的情况下关闭该窗口 谢谢。我可以通过做其他事情来实现我的目标。基本上,我只是将整个窗口作为CloseCommand的参数传递,然后从ViewModel中关闭它 <Button Content="Close" Command="{Binding CloseCommand}" Comma
RegionManager.RequestBlockingDialogNavigate(MyViewModel);
如何在不使用代码隐藏的情况下关闭该窗口
谢谢。我可以通过做其他事情来实现我的目标。基本上,我只是将整个窗口作为CloseCommand的参数传递,然后从ViewModel中关闭它
<Button Content="Close" Command="{Binding CloseCommand}" CommandParameter="{Binding ElementName=MyWindow}" />
在视图模型中,我只是这样做:
public DelegateCommand<Window> CloseCommand { get; private set;}
public MyViewModel()
{
CloseCommand = new DelegateCommand<Window>(Close);
}
public void Close(Window window)
{
window.Close();
}
public DelegateCommand CloseCommand{get;private set;}
公共MyViewModel()
{
CloseCommand=新的DelegateCommand(关闭);
}
公共空间关闭(窗口)
{
window.Close();
}
我以为棱镜里有什么东西可以做。到目前为止我还没有找到任何东西
谢谢你也可以试试这个
<Button Content="Close" Command="{Binding CloseCommand}" />
public DelegateCommand CloseCommand { get; private set;}
public MyViewModel()
{
CloseCommand = new DelegateCommand(()=>
{
foreach (Window window in Application.Current.Windows)
{
if (window is DialogView)//your window type come here
{
window.Close();
} }
});
}
public DelegateCommand CloseCommand{get;private set;}
公共MyViewModel()
{
CloseCommand=新的DelegateCommand(()=>
{
foreach(Application.Current.Windows中的窗口)
{
如果(窗口是DialogView)//您的窗口类型到这里来
{
window.Close();
} }
});
}
如果使用.ShowDialog()显示窗口,则此操作将不起作用
或者代替foreach,这里的对话框视图是您的窗口
Application.Current.Windows.OfType<DialogView>().FirstOrDefault().Close();
Application.Current.Windows.OfType().FirstOrDefault().Close();
这违反了MVVM模式。ViewModels不能引用Views这就是为什么我要在PRISM中实现它的原因