Wpf 防止窗户打开

Wpf 防止窗户打开,wpf,events,dialog,window,modal-dialog,Wpf,Events,Dialog,Window,Modal Dialog,我想问一个奇怪的问题。它是关于测试WPF应用程序的 我当前测试的对象是一个WF应用程序,它会自动打开信息对话框。这些对话框是模态的,每次都可以打开。对于在该应用程序上运行的自动化测试来说,这是非常令人不安的。每当我的测试人员访问可视化树并尝试访问GUI(如调用按钮等)时,可能会打开这样一个对话框窗口,通过其模式阻塞GUI并导致测试失败 解决这个问题的一个办法是阻止这些对话打开。我不能直接更改被测应用程序的行为,但我可以订阅所有窗口事件(如初始化、加载、渲染等)。我想使用这些事件中的一个来防止窗口

我想问一个奇怪的问题。它是关于测试WPF应用程序的

我当前测试的对象是一个WF应用程序,它会自动打开信息对话框。这些对话框是模态的,每次都可以打开。对于在该应用程序上运行的自动化测试来说,这是非常令人不安的。每当我的测试人员访问可视化树并尝试访问GUI(如调用按钮等)时,可能会打开这样一个对话框窗口,通过其模式阻塞GUI并导致测试失败

解决这个问题的一个办法是阻止这些对话打开。我不能直接更改被测应用程序的行为,但我可以订阅所有窗口事件(如初始化、加载、渲染等)。我想使用这些事件中的一个来防止窗口打开并阻塞GUI

我尝试使用加载的事件,因为它是实际显示窗口之前的最后一个事件,但是对相应窗口调用Close()会导致崩溃。我也试过隐藏()。。。这会阻止窗口可见,但GUI仍被不可见对话框阻止


有人知道我如何才能有效地防止WPF窗口/对话框打开,或者至少在模式上阻止GUI吗

如果您在对话框中使用a,您可以简单地模拟它进行测试

即使您可以阻止它,您仍然必须为具有Ok/Cancel/Retry/…的对话框提供返回值。。。按钮。无论如何,这里唯一真正的解决方案是显而易见的:应该修改源代码,以便使用某些DI框架最终提供的IModelDialogService之类的服务。然后,在运行测试时,您提供了该服务的一个实现,它什么也不做..hmm。。。除了标准的关闭按钮和“确定”按钮之外,这些信息性的、自发的对话框没有任何其他按钮。所有具有“重试”或“取消”等功能的对话框都不会自动打开,可以系统地进行预期和处理(我已经这样做了)。这样的基本对话框难道没有办法吗?不幸的是,它们修改我的测试应用程序的可能性很小。因此,不需要AUT修改的方法会更好。