无论如何阻止UI线程像Window.ShowDialog()WPF一样

时间:2016-07-01 09:14:32

标签: c# wpf windows multithreading showdialog

我在不使用Window.Show()或Window.ShowDialog()的情况下开发WPF应用程序,它只是简单的MainWindow并加载到指定的UserControls来放置持有者。

但问题是,当app将控件显示到占位符时,它不会像Window.ShowDialog()一样阻止线程,我的意思是当用户控件嵌入到MainWindow中时,它可以接近返回到主屏幕像这样:

// Invoke foo control into placeholder
if (!ShowFooControl())
{
// TODO A: if control's result return false 
FooA();
}

// TODO B:just call after foo control closed
FooB();

return true;

FooB()仅在Foo Control关闭后调用。

FooA()仅在Foo Control关闭且DialogResult = false后调用。

对于我的情况,我该怎么做才能模拟Window.ShowDialog。

感谢。

1 个答案:

答案 0 :(得分:0)

很明白,获得你想要的东西的最好方法就是我在第一个答案中说的。 为了更好地解释你的意思,我已经将一个小型WPF应用程序作为样本。 我的应用程序有一个主窗口和3个不同的用户控件,每个用户控件都有一些功能和一个关闭按钮。 在主窗口中,我放置了三个按钮,用于创建和显示窗口内的控件,并在窗口中设置一个布尔属性,用于在显示用户控件时锁定任何其他控件,并在用户控件关闭后启用所有控件。您可以使用以下链接下载示例 http://blogs.dotnetwork.it/sabrina/download/SampleCode/DisableControls.zip