c# wpf 网格 - 选定单元格已更改,未为同一行中的单元格触发
本文关键字:单元格 一行 网格 wpf | 更新日期: 2023-09-27 18:34:57
我有一个带有 SelectedCellsChanged 事件的 DataGrid。从不同行中选择单元格时会触发它,但是如果我从当前行中选择一个单元格,则不会触发该事件。
XAML 代码:
<DataGrid Name ="NavDataGrid"
Margin="0,0,0,0"
VerticalAlignment="Top"
ItemsSource="{Binding NavTable}"
CanUserAddRows="False"
SelectionMode="Extended"
AutoGenerateColumns="False"
SelectedCellsChanged="NavDataGrid_SelectedCellsChanged"
PreviewMouseWheel="NavDataGrid_PreviewMouseWheel">
代码隐藏:
private void NavDataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
我已经尝试了选择更改事件,它(dosent(的工作方式相同。
我是 wpf 的新手,所以也许这是一个简单的问题,任何想法都会很棒。
谢谢
事实上,这就是 WPF DataGrid 的工作方式。您必须手动检测选择了哪个单元格。
请参阅 MSDN 文档
选择 默认情况下,当用户单击 DataGrid 中的单元格时,将选择整行,并且用户可以选择多行。可以设置 SelectionMode 属性以指定用户是否可以选择单元格、整行或同时选择两者。设置 SelectionUnit 属性以指定是可以选择多行或多单元格,还是只能选择单行或单个单元格。 可以获取有关从"选定单元格"属性中选择的单元格的信息。您可以在 SelectedCellsChanged 事件的 SelectedCellsChangedEventArgs 中获取有关其选择已更改的单元格的信息。调用 SelectAllCells 或 UnselectAllCells 方法以编程方式选择或取消选择所有单元格。有关更多信息,请参见 DataGrid 控件中的默认键盘和鼠标行为。
您可以将自己挂在另一个事件(例如:鼠标按下/单击(,获取已单击的单元格并执行之后必须执行的操作。
我建议阅读该文章:检测单击的单元格和行