向各位求教,默认的 datagrid 选中行的时候画面上会有选中该行的状态,但是在datagrid 从当前的选中行在选择其他行的时候需要执行一段逻辑处理,验证即将离开的行的数据的业务正确性,如果不正确就需要继续留在该行,验证正确则可以选中另一行。
现在的处理是在SelectionChanged事件中进行业务逻辑验证,如果不符合规则则刷新数据 ,然后再选中原来的那一行。 可是这时候发现一个问题,行选中的状态没了,但是SelectIndex值是对的。
请问应该怎样才能出现行选中的状态?
通过 ItemContainerGenerator 拿到DataGrid的ItemContainer-DataGridRow,然后设置其IsSelected属性为True. 注意,ItemContainerGenerator 中有两个方法可以拿到Container,一个基于Index,一个基于绑定的数据对象Item.
Microsoft.Windows.Controls.DataGridRow row = datagrid.ItemContainerGenerator.ContainerFromIndex(index) as Microsoft.Windows.Controls.DataGridRow; row.IsSelected = true;
Bob Bao [MSFT] MSDN Community Support | Feedback to us