В моем случае это сработало, добавив этот код в главное окно.Однако я немного упростил это:
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;
}
}
Единственная проблема с этим подходом на моей машине состоит в том, что окно отладчика загромождено сообщениями:
- Первыйслучайное исключение типа System.Windows.Automation.ElementNotAvailableException 'произошло в PresentationCore.dll
- Первое случайное исключение типа System.ArgumentException' произошло в UIAutomationClientsideProviders.dll
- Первое случайное исключениетип 'System.NotSupportedException' произошел в mscorlib.dll
- Первое случайное исключение типа 'System.ComponentModel.Win32Exception' произошло в UIAutomationClient.dll
Все это происходит много раз.Я не мог исправить эти сообщения, но теперь мое приложение работает быстрее.