none
wpf toolkit datagrid 行选中 RRS feed

  • 问题

  • 向各位求教,默认的 datagrid 选中行的时候画面上会有选中该行的状态,但是在datagrid 从当前的选中行在选择其他行的时候需要执行一段逻辑处理,验证即将离开的行的数据的业务正确性,如果不正确就需要继续留在该行,验证正确则可以选中另一行。

    现在的处理是在SelectionChanged事件中进行业务逻辑验证,如果不符合规则则刷新数据 ,然后再选中原来的那一行。 可是这时候发现一个问题,行选中的状态没了,但是SelectIndex值是对的。

    请问应该怎样才能出现行选中的状态?

    2012年4月24日 2:24

答案

  • 通过 ItemContainerGenerator 拿到DataGrid的ItemContainer-DataGridRow,然后设置其IsSelected属性为True. 注意,ItemContainerGenerator 中有两个方法可以拿到Container,一个基于Index,一个基于绑定的数据对象Item.

    公共方法 ContainerFromIndex 返回对应于 ItemCollection 中指定索引项的元素。
    公共方法 ContainerFromItem 返回对应于指定项的 UIElement
              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

    2012年4月26日 3:26
    版主