我正在使用DataGrid填充来自DataTable的值。在我的程序中,我有四个按钮:转到第一个,最后一个,下一个和上一个,因为名称表示我必须根据使用这些按钮进行的选择来选择行。如果我使用下面的代码获取行(例如第一行),一切似乎都很好。
DataGridRow row =(DataGridRow)userControl.m_DataGrid.ItemContainerGenerator.ContainerFromIndex(0);
row.IsSelected = true;
但是当行数多于Datagrid的高度时(当滚动条进入图片时),代码会抛出空值。
请帮我解决这个问题。我认为这是因为观点问题。
答案 0 :(得分:0)
由于虚拟化,容器仅在对象处于视图中时创建,因此您可以先使用respective method将项目滚动到视图中,等待创建容器然后选择它。
由于这是相当混乱的,我建议使用IsSelected
的样式将DataGridRow
绑定到项目的属性(将其设置为ItemContainerStyle
)。然后,您可以将该属性设置为true,并在需要时将项目滚动到视图中。