WPF DataGrid设置selectedItem

时间:2011-07-11 08:56:28

标签: wpf datagrid selecteditem

我的问题是我想设置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

1 个答案:

答案 0 :(得分:1)

不幸的是,您必须遍历集合以匹配单元格中的现有数据。

如果您正在使用MVVM模式,则可以将此逻辑移至ViewModel并直接处理基础数据。您可以创建依赖项属性以将SelectedItem绑定到。我认为你仍需要在后面的代码中使用一个事件来调用ScrollIntoView