Wpf 关闭与棱镜区域管理器的对话框

Wpf 关闭与棱镜区域管理器的对话框,wpf,mvvm,prism,Wpf,Mvvm,Prism,我有一个WPF/PRISM应用程序,其中我使用以下代码打开了一个窗口: RegionManager.RequestBlockingDialogNavigate(MyViewModel); 如何在不使用代码隐藏的情况下关闭该窗口 谢谢。我可以通过做其他事情来实现我的目标。基本上,我只是将整个窗口作为CloseCommand的参数传递,然后从ViewModel中关闭它 <Button Content="Close" Command="{Binding CloseCommand}" Comma

我有一个WPF/PRISM应用程序,其中我使用以下代码打开了一个窗口:

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中实现它的原因