DataGrid 焦点和 SelectedIndex?

DataGrid Focus and SelectedIndex?

很难理解这个概念。如果您单击 WPF DataGrid 上的一行,它会用 SystemColors.HighlightBrushKey 着色并具有 "focus."

如果您 select 另一个控件,该行不再有 SystemColors.HighlightBrushKey,而是一些其他颜色(不确定它是什么 SystemColor)。然而,它仍然被认为是 DataGridselectedItem

我原以为如果 DataGrid 失去焦点,它的 selectedIndex 将始终为 -1,而 selectedItemnull。这种行为的目的是什么,有没有简单的方法可以关闭它?

假设您有一个 DataGrid 和单独的 "do stuff with selected item" 按钮。如果网格在失去焦点时放弃选择,你怎么能让它工作?这是一个简单的例子,但总的来说,我不认为用户做出的持续选择状态是一件坏事。

关闭它似乎很容易,只需在 LostFocus 上设置 SelectedItems.Clear() 即可。您可以创建自己的 DataGrid 子类并将其放在那里,这样您就不必在每个网格中都编写它。不过,您必须实现更精细的功能才能使其与多选一起使用。