我们的应用程序中使用了ListView
对象,它是一个新类SortableListView : ListView
并使用GridView
模式。我们添加了一个自定义提供程序,允许在自动化过程中对行进行解除虚拟化(因此我们不必执行"检查屏幕,不,滚动,重复"选择项目中的项目的方法列表)。它非常有效,当您实现屏幕外对象时,它可以高效地显示在屏幕上。我们使用的是ListView,因为网格是只读的,所以我们不需要DataGrid的编辑模板。
但是,有时(我们无法准确追踪导致它的原因)ControlType被识别为DataGrid而不是ListView。这打破了我们的自动化,也是我们可以解决它的唯一方式,每次我们必须解决网格时,我们必须检查它是否将自己呈现为DataGrid或ListView。更令人不安的是,表的实际行具有类ListViewItem
,确切的对象形式为Microsoft未修改,但被识别为DataGrid行。
有谁知道为什么UIAutomation会认定它是DataGrid
而不是ListView?它只是直接从ListView继承。