我的问题是我想设置selectedItem(在数据网格中标记一行)。 我搜索了很多,实际上我希望有一个更好的解决方案,而不是遍历数据网格。
我的建议:
我有一个值为3的数字,我想要标记数字3的数据网格行。 我试过这个:
DataGridRow row = (DataGridRow)gridErrors.ItemContainerGenerator.ContainerFromItem(gridErrors.SelectedItem);
if (row != null)
{
ErrorInfo info = row.Item as ErrorInfo;
var blubb = from c in this.objectsToSync
where c.Number == info.Number
select c;
if (blubb != null)
{
gridCsvContent.SelectedItem = blubb;
gridCsvContent.ScrollIntoView(blubb);
DataGridRow rowContent = (DataGridRow)gridCsvContent.ItemContainerGenerator.ContainerFromItem(gridCsvContent.SelectedItem);
rowContent.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
首先,我提取我的Number所在的DataGridRow(值3) 然后我有一个linq查询,我得到了数字3的对象。 然后我想设置selectedItem但之后它为null。
有没有解决方案,我不必遍历数据网格..? 有没有办法直接设置所选项目?
非常感谢您提前! KR
答案 0 :(得分:1)
不幸的是,您必须遍历集合以匹配单元格中的现有数据。
如果您正在使用MVVM模式,则可以将此逻辑移至ViewModel
并直接处理基础数据。您可以创建依赖项属性以将SelectedItem绑定到。我认为你仍需要在后面的代码中使用一个事件来调用ScrollIntoView
。