【发布时间】:2015-05-19 08:37:49
【问题描述】:
由于 CodedUI 的一些缺点,很难在 DataGrid 中选择项目。我发现的一种解决方法是像这样覆盖 ItemContainerStyle:
<DataGrid.ItemContainerStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="AutomationProperties.AutomationId">
<Setter.Value>
<MultiBinding StringFormat="ArisingID_{0}">
<Binding Path="(DataGridRow.Tag)" RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding>
</Setter.Value>
</Setter>
<Setter Property="AutomationProperties.Name">
<Setter.Value>
<MultiBinding StringFormat="ArisingID_{0}">
<Binding Path="(DataGridRow.Tag)" RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ItemContainerStyle>
然后在后面的代码中用唯一的 ID 填充每个 Row.Tag:
private void MyDataGrid_OnLoadingRow(object sender, DataGridRowEventArgs e)
{
var item = e.Row.Item as IMyViewModel;
e.Row.Tag = item.UniqueSeqId;
}
但是,一个问题是这会覆盖数据网格行的一些“默认样式” - 数据网格上的每个单元格似乎都是可以单独选择的,而不是仅表现为一行。
将默认样式与这些修改结合起来的最佳方式是什么?
【问题讨论】:
标签: wpf xaml datagrid styles coded-ui-tests