我对白色项目非常陌生,我只是检查它的功能……在我的工作中,我强烈地处理了wpf数据网格, 当列为DataGridTemplateColumn时,我无法获取datagrid单元格的值. 它不仅适用于DataGridTemplateColumn,而是
当列为DataGridTemplateColumn时,我无法获取datagrid单元格的值.
它不仅适用于DataGridTemplateColumn,而是适用于所有列类型.
我的数据网格如下:
<my:DataGrid AutoGenerateColumns="False" Margin="25,28,42,34" Name="dataGrid1" > <my:DataGrid.Columns> <my:DataGridTemplateColumn Header="Header" x:Name="koko" Width="200"> <my:DataGridTemplateColumn.CellTemplate > <DataTemplate > <TextBlock Name="moko" Text="{Binding col1, Mode=OneWay,Converter={StaticResource fataGridHighlightConverter }}" ></TextBlock> </DataTemplate> </my:DataGridTemplateColumn.CellTemplate> <my:DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <Grid x:Name="myEditGrid" Loaded="myEditGrid_Loaded"> </Grid> </DataTemplate> </my:DataGridTemplateColumn.CellEditingTemplate> </my:DataGridTemplateColumn> </my:DataGrid.Columns> </my:DataGrid>
我的测试是:
[Test] public void TestDatagrid5() { var tab = _win.Get<ListView>(SearchCriteria.ByAutomationId("dataGrid1")); var count = tab.Rows.Count; var row = tab.Rows[1]; ListViewCell x = row.Cells[1]; //Always count = 0 :( }
但是细胞计数总是= 0,我需要得到细胞值!!!请帮忙!
我不喜欢这个答案,并希望找到一个更好的方法来做到这一点..这就是说,如果你在ListViewRow项目中询问网格中的元素,那么你可以使用UiAutomationElement并自己创建该元素的白色版本.
[Test] public void TestDatagrid5() { var tab = _win.Get<ListView>(SearchCriteria.ByAutomationId"dataGrid1")); var column = new List<string>(); foreach (var r in tab.Rows) { var automationElement = r.GetElement(SearchCriteria.ByAutomationId("moko")); var label = new Label(automationElement, new NullActionListener()); column.Add(label.Text); } Assert.That(column, Is.EquivalentTo(new[] { "what", "is", "expected" })); }