WPF UI自动化问题

这个线程属于这个

我在问我需要从哪里插入解决方法

我有一个WPF应用程序,在Windows 7的某些客户端上存在性能问题。在Windows XP上,所有工作都很快。 该应用程序有一个MainShell和一些Child-Windows。 MainShell有时在某些机器上挂起,子窗口也是如此。 现在,我是否必须从所有窗口中的上述链接的线程中插入变通方法? 还有其他解决方法吗?

我一直在研究几乎所有东西都很好的应用程序,但WPF控件在某些笔记本电脑上很慢(联想)。 它是滞后和冷冻的,通常会抑制使用。

我做了以下事情:

  1. 实现上面的代码:改进它,但没有修复。
  2. 下载的修补程序 – – http://archive.msdn.microsoft.com/KB978520 (可能不是必需的)
  3. 下载的修补程序 – – http://archive.msdn.microsoft.com/KB2484841 (即使你有Windows 7 / .NET 4也一​​定要求)
  4. 进一步改进了代码(validation导致了过多的对象) – 为什么WPF Style在ToolTip中显示validation错误为TextBox工作但是对于ComboBox失败?

可能只需要3号,但它有效。 只是发布在这里,所以人们不会失去我在内存分析器等丢失的日子。

在我的情况下,它通过将该代码添加到主窗口来工作。 但是,我简化了一下:

public partial class MyMainWindow : Window { public MyMainWindow() { GotFocus += WindowGotFocus; } private void WindowGotFocus(object sender, RoutedEventArgs e) { WindowInteropHelper helper = new WindowInteropHelper(this); var mainWindowAutomationElement = AutomationElement.FromHandle(helper.Handle); Automation.AddStructureChangedEventHandler(mainWindowAutomationElement, TreeScope.Element, delegate {}); GotFocus -= WindowGotFocus; } } 

在我的机器中,这种方法的唯一问题是调试器窗口混乱了如下消息:

  • PresentationCore.dll中出现类型System.Windows.Automation.ElementNotAvailableException’的第一次机会exception
  • UIAutomationClientsideProviders.dll中出现’System.ArgumentException’类型的第一次机会exception
  • mscorlib.dll中发生了’System.NotSupportedException’类型的第一次机会exception
  • UIAutomationClient.dll中出现’System.ComponentModel.Win32Exception’类型的第一次机会exception

一切都发生了很多次。 我无法修复这些消息,但我的应用程序现在运行得更快。