我对白色项目很陌生,我只是在检查它的功能......在我的工作中,我大量处理 wpf 和数据网格,
当列是 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" }));
}
关于wpf - 白色 UI 自动化 : Get WPF DataGrid cell value?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7968289/