Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否仍然可以像Window.ShowDialog()WPF那样阻止UI线程_C#_Wpf_Windows_Multithreading_Showdialog - Fatal编程技术网

C# 是否仍然可以像Window.ShowDialog()WPF那样阻止UI线程

C# 是否仍然可以像Window.ShowDialog()WPF那样阻止UI线程,c#,wpf,windows,multithreading,showdialog,C#,Wpf,Windows,Multithreading,Showdialog,我正在开发一个WPF应用程序,没有使用Window.Show()或Window.ShowDialog(),它只是一个简单的主窗口,并将指定的用户控件加载到占位符 但问题是,当应用程序将控件显示到PlaceHolder中时,它不会像Window.ShowDialog()那样阻止线程,我的意思是,当用户控件嵌入到MainWindow中时,它可以像下面这样接近mainscreen: // Invoke foo control into placeholder if (!ShowFooControl()

我正在开发一个WPF应用程序,没有使用Window.Show()或Window.ShowDialog(),它只是一个简单的主窗口,并将指定的用户控件加载到占位符

但问题是,当应用程序将控件显示到PlaceHolder中时,它不会像Window.ShowDialog()那样阻止线程,我的意思是,当用户控件嵌入到MainWindow中时,它可以像下面这样接近mainscreen:

// 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控件后调用

FooA()仅在Foo控件关闭且DialogResult=false后调用

如何为我的案例模拟Window.ShowDialog


谢谢。

好的,明白了,要得到你想要的东西,最好的办法就是我在第一个答案中说的。 为了更好地解释这意味着什么,我制作了一个小的WPF应用程序作为示例。 我的应用程序有一个主窗口和3个不同的用户控件,每个控件都有一些功能和一个关闭按钮。 在主窗口中,我放置了三个按钮,用于在窗口中创建和显示控件,并在窗口中设置一个布尔属性,该属性在显示用户控件时锁定任何其他控件,并在关闭用户控件后启用所有控件。您可以使用以下链接下载示例

要阻止除当前用户控件之外的所有内容吗?那个用户控件在不同的窗口中吗?我真的有一些问题,从我所了解的情况来理解你在做什么,你有一个窗口,在这个窗口中,你显示了一些控件,我假设是在用户操作中,你希望如果我显示的控件,窗口的其余部分被冻结,如何将控件的IsEnabled属性与适当的viewmodel一起使用,以便在显示控件时窗口上的其余控件将IsEnabled属性设置为false?您好@Master117是的,这就是我想要的:阻止除调用MainWindow的当前UserControl之外的其他控件。谢谢@Sabrina_,我更新了我的问题。问题是我希望ShowFooControl()具有类似Window.ShowDialog()的功能,它可以阻止其他代码,直到关闭为止。谢谢你试过手动屏蔽其他东西吗?但是,您这样做的方式是,所有控件都在同一个线程中运行。大多数元素都有.disable()或类似的内容。