我有一个模态对话框和(当用户按下OK按钮时)我想隐藏它,显示另一个模态对话框(例如MessageBox)然后再显示它。我的问题是,当对话框被隐藏时,它的DialogResult会得到false
,当然它会在按钮的处理程序方法结束后立即关闭。我甚至试图将不透明度设置为0而不是Hide()
,但这根本不起作用(它仍然可见)。
有没有办法暂时隐藏模式对话框没有关闭它?
答案 0 :(得分:0)
这不涉及结果,但是看看如何从页面返回数据 PageModal是一个页面 您将NavigationWindow用于模态部分
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();
}
}
答案 1 :(得分:0)
好的,不透明度正在发挥作用。我刚刚用完成的动画(使用HoldEnd行为)阻止它,我并不知道它。因此,如果任何人遇到同样的问题并且需要隐藏模态窗口,那么Opacity = 0;
就是解决方案。
答案 2 :(得分:0)
对我有用的解决方法:
要在设置DialogResult时阻止窗口关闭,请改为创建自己的DialogResult:
public new bool DialogResult;
现在您仍然可以设置变量并选择Hide()而不是Close()。 所以在设置DialogResult的所有地方我都添加了一个
隐藏();
所以我看起来像这样:
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;
}
}
}