【问题标题】:How to properly ignore windows created by Visual Studio debugging tool for XAML如何正确忽略 Visual Studio 调试工具为 XAML 创建的窗口
【发布时间】:2017-09-26 00:38:23
【问题描述】:

在我的应用程序中,我需要获取所有窗口的列表。

var windows = Application.Current.Windows;

如果我在调试模式下运行我的应用程序,我不仅会在列表中看到我的表单,还会看到由 Visual Studio 调试工具为 XAML 创建的 Microsoft.XamlDiagnostics.WpfTap.WpfVisualTreeService.Adorners.AdornerLayerWindow 实例。

过滤窗口列表以忽略调试工具创建的窗口的正确方法是什么?我不想引用其他程序集并检查是否

window is AdornerLayerWindow

我不想像这样过滤

window.GetType().Name != "AdornerLayerWindow"

还有其他想法吗?

【问题讨论】:

  • 为什么不直接在Tools->Options->Debugging->Enable UI Debugging Tools for XAML下关闭它们?
  • 当然可以关闭调试工具。在这种情况下,我将无法使用此工具,并且从事此项目的所有其他开发人员将不得不关闭此工具。每次新开发人员加入项目时,我都必须通知调试工具应该关闭。我不认为这是一种正确的做事方式。
  • 在我的情况下,关闭 UI 调试工具结果证明是两害相权。谢谢@Clemens!

标签: wpf xaml visual-studio-2015


【解决方案1】:

我只是做了伎俩window.ActualWidth != 0。它对我很有用。

Application.Current.Windows
    .Cast<Window>()
    .Where(w => w.ActualWidth != 0)
    .ToList()
    .ForEach(w => w.Close());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多