非常简单,
new myForm().ShowDialog()
在继续执行之前等待对话框关闭,我希望这种行为,除了在继续之前它应该等待对话框隐藏。
答案 0 :(得分:1)
您可以处理IsVisibleChanged
事件并使用await
和TaskCompletionSource<T>
异步阻止,直到引发事件为止,例如:
private async void OpenDialog_Click(object sender, RoutedEventArgs e)
{
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
var window = new DialogWindow();
window.IsVisibleChanged += (ss, ee) =>
{
if (!window.IsVisible)
tcs.SetResult(true);
};
window.Show();
this.IsEnabled = false;
await tcs.Task;
MessageBox.Show("window hidden!");
}
答案 1 :(得分:0)
真的有点破解,但你可以将控件的可见性绑定到视图的datacontext中的属性(刚刚初始化之后),并在那里做你的逻辑。或者,如果你的代码抛出异常,那么你不能只检查null吗?