WPF:如何在不破坏模式对话框的情况下隐藏它?(其对话结果)



我有一个模式对话框,(当用户按下其"确定"按钮时)我想隐藏它,显示另一个模式对话框(例如消息框),然后再次显示它。我的问题是,当对话框被隐藏时,它的 DialogResult 会false,当然它会在按钮的处理程序方法结束后立即关闭。我什至尝试将 Opacity 设置为 0 而不是 Hide()但这根本不起作用(它仍然可见)。

有没有办法在不关闭模态对话框的情况下暂时隐藏它?

对我有用的解决方法:

若要防止窗口在设置对话框结果后关闭,请改为创建自己的对话框结果:

公共新布尔对话结果;

现在,您仍然可以设置变量并选择 Hide() 而不是 Close()。所以所有设置对话框结果的地方我添加一个

隐藏();

所以我看起来像这样:

DialogResult=true;
Hide(); 

DialogResult=false;
Hide(); 

这样我就可以再次做一个新的 ShowDialog()。

因此,如果我需要重新打开窗口直到内容正确(如果在关闭后进行验证),它将如下所示:

    public void ShowDialog()
    {
        var dialog = new MyDialog();
        bool ok = false;
        while (!ok)
        {
            dialog.ShowDialog();
            if (dialog.DialogResult)
            {
                ok = DoSomeValidation();
            }
            else
            {
                ok = true;
            }
        }
    }

这不会处理结果,但请参阅如何从页面
返回数据PageModal 是一个页面
将导航窗口用于模式部件

public partial class MainWindow : Window
{
    private PageModal pageModal = new PageModal();
    public MainWindow()
    {
        InitializeComponent();
    }
    private void btnLaunchModal(object sender, RoutedEventArgs e)
    {
        NavigationWindow navWindow = new NavigationWindow();
        navWindow.Content = pageModal;
        navWindow.ShowDialog();
    }
}

好的,不透明度正在工作。我只是用完成的动画(带有 HoldEnd 行为)阻止了它,我不知道它。因此,如果有人遇到同样的问题并需要隐藏模态窗口,Opacity = 0;就是解决方案。

相关内容

  • 没有找到相关文章

最新更新