微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF UI自动化问题

如何解决WPF UI自动化问题

| 这个线程属于这个 我问我需要在哪里插入解决方法 我有一个WPF应用程序,在使用Windows 7的某些客户端上存在性能问题。在Windows XP上,所有应用程序都可以快速运行。该应用程序具有MainShell和一些子Windows。 MainShell有时会挂在某些计算机上,子窗口也会挂起。现在,是否必须在所有窗口中从上述链接的线程中插入解决方法? 还有其他解决方法吗?     

解决方法

        我一直在开发一个几乎可以在所有应用程序上正常运行的应用程序,但某些笔记本电脑(联想)上的WPF控件运行缓慢。它是滞后和冻结的,通常会抑制使用。 我做了以下事情: 实现了上面的代码:对其进行了改进,但未解决。 下载的修补程序--http://archive.msdn.microsoft.com/KB978520(可能不是必需的) 下载的修补程序--http://archive.msdn.microsoft.com/KB2484841(即使您使用Windows 7 / .NET 4,也绝对需要) 进一步改进了代码(验证导致了过多的对象)-为什么WPF样式在ToolTip中显示验证错误对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 \'的第一次机会异常 类型'System.ArgumentException \'的第一次机会异常发生在UIAutomationClientsideProviders.dll中 mscorlib.dll中发生类型为'System.NotSupportedException \'的第一次机会异常 UIAutomationClient.dll中发生了\\ System.ComponentModel.Win32Exception \类型的第一次机会异常 一切都发生了很多次。我无法修复这些消息,但是我的应用程序现在运行得更快。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。