我有一个绑定到WPF应用程序中的DataTable的DataGrid . DataGrid的SelectionUnit必须设置为Cell,但我还想为整行添加一个微妙的突出显示,以便在宽DataGrids上,当用户滚动选定的单元格时,他们仍然可以看到突出显示的行 .
这有点问题,因为DataGridRow的IsSelected属性永远不会设置为true,因为未选中Row,Cell是 .
我不介意它是粘性RowSelector中的小箭头或应用于整行的突出显示 . 只需要某种方式突出显示选择哪一行 .
2 回答
我在这里玩过一点,没什么了不起但是工作版本:
这是代码隐藏:
这是获取父级的辅助方法:
它不是MVVM,但考虑到我们只是使用View元素 . 我想这次不是必须的 . 所以基本上,在第一次选择时,你会为行着色,在失去的焦点上,将前一个变为白色并更改新选择的颜色 .
这有效,并且像MVVM一样 . 为了更好的可读性,我使用了ExpressionConverter这是一种令人惊讶的方式,使XAML更具可读性,但更容易出错 . 我还对它做了一些修改以支持mutlibindings,但这是offtopic,你从代码中得到了基本的想法:从行和网格的CurrentCell属性中获取数据上下文,并比较它们是否相同 .