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 的新手,所以也许这是一个简单的问题,任何想法都会很棒。

谢谢

c# wpf 网格 - 选定单元格已更改,未为同一行中的单元格触发

事实上,这就是 WPF DataGrid 的工作方式。您必须手动检测选择了哪个单元格。

请参阅 MSDN 文档

选择 默认情况下,当用户单击 DataGrid 中的单元格时,将选择整行,并且用户可以选择多行。可以设置 SelectionMode 属性以指定用户是否可以选择单元格、整行或同时选择两者。设置 SelectionUnit 属性以指定是可以选择多行或多单元格,还是只能选择单行或单个单元格。 可以获取有关从"选定单元格"属性中选择的单元格的信息。您可以在 SelectedCellsChanged 事件的 SelectedCellsChangedEventArgs 中获取有关其选择已更改的单元格的信息。调用 SelectAllCells 或 UnselectAllCells 方法以编程方式选择或取消选择所有单元格。有关更多信息,请参见 DataGrid 控件中的默认键盘和鼠标行为。

您可以将自己挂在另一个事件(例如:鼠标按下/单击(,获取已单击的单元格并执行之后必须执行的操作。

我建议阅读该文章:检测单击的单元格和行