DataGrid 焦点和 SelectedIndex?
DataGrid Focus and SelectedIndex?
很难理解这个概念。如果您单击 WPF DataGrid
上的一行,它会用 SystemColors.HighlightBrushKey
着色并具有 "focus."
如果您 select 另一个控件,该行不再有 SystemColors.HighlightBrushKey
,而是一些其他颜色(不确定它是什么 SystemColor)。然而,它仍然被认为是 DataGrid
的 selectedItem
。
我原以为如果 DataGrid 失去焦点,它的 selectedIndex
将始终为 -1,而 selectedItem
为 null
。这种行为的目的是什么,有没有简单的方法可以关闭它?
假设您有一个 DataGrid 和单独的 "do stuff with selected item" 按钮。如果网格在失去焦点时放弃选择,你怎么能让它工作?这是一个简单的例子,但总的来说,我不认为用户做出的持续选择状态是一件坏事。
关闭它似乎很容易,只需在 LostFocus
上设置 SelectedItems.Clear()
即可。您可以创建自己的 DataGrid 子类并将其放在那里,这样您就不必在每个网格中都编写它。不过,您必须实现更精细的功能才能使其与多选一起使用。
很难理解这个概念。如果您单击 WPF DataGrid
上的一行,它会用 SystemColors.HighlightBrushKey
着色并具有 "focus."
如果您 select 另一个控件,该行不再有 SystemColors.HighlightBrushKey
,而是一些其他颜色(不确定它是什么 SystemColor)。然而,它仍然被认为是 DataGrid
的 selectedItem
。
我原以为如果 DataGrid 失去焦点,它的 selectedIndex
将始终为 -1,而 selectedItem
为 null
。这种行为的目的是什么,有没有简单的方法可以关闭它?
假设您有一个 DataGrid 和单独的 "do stuff with selected item" 按钮。如果网格在失去焦点时放弃选择,你怎么能让它工作?这是一个简单的例子,但总的来说,我不认为用户做出的持续选择状态是一件坏事。
关闭它似乎很容易,只需在 LostFocus
上设置 SelectedItems.Clear()
即可。您可以创建自己的 DataGrid 子类并将其放在那里,这样您就不必在每个网格中都编写它。不过,您必须实现更精细的功能才能使其与多选一起使用。