ContentControl is not visible when application starts via UI Automation test, but its visible when application starts by user

后端 未结 3 2420
夕颜
夕颜 2021-02-20 13:53

We are using the prism and WPF to build application. Recently we started using UI Automation (UIA) to test our app. But some strange behavior occurred when we run UIA test. Here

3条回答
  •  轮回少年
    2021-02-20 14:35

    I'm sorry that I've missed some detail, that was the key to the answer. I think that it was not important thing. Anyway.

    We used NavBar from DevExpress controls library for WPF. What turns out, is when NavBar is present, dynamically created views are not appears on the UI Automation tree. When remove it from the window, there was an ability to see all dynamically loaded views. What does the NavBar - still mistic for me.

    Here bright example to see what happened, if NavBar is present or absent on the Window (DevExpress is required).

    MainWindow.xaml:

    
        
            
                
                
            
    
            
                
                
            
            
            
                
                    
                
            
            
            

    MainWindow.xaml.cs

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            TextBox tb = new TextBox();
            Grid.SetRow(tb, 1);
            Grid.SetColumn(tb, 1);
            tb.Text = "dynamic is not visible, if NavBar here...";
            ContentGrid.Children.Add(tb);
        }
    }
    

    Edit

    According to the DevExpress answer on their support site:

    After a peer is created, listening of automation events may cause performance issues. We have decided to clear invocation lists of automation events to resolve it. In your specific situation, you need to disabling clearing. To do it, please set the static DevExpress.Xpf.Core.ClearAutomationEventsHelper.IsEnabled property to False in the Window constructor.

    This solve the problem.

提交回复
热议问题