c# wpf grid - SelectedCellsChanged 不会为同一行中的单元格触发

Posted

技术标签:

【中文标题】c# wpf grid - SelectedCellsChanged 不会为同一行中的单元格触发【英文标题】:c# wpf grid - SelectedCellsChanged not fired for cells in same row 【发布时间】:2016-05-29 10:38:43 【问题描述】:

我有一个带有 SelectedCellsChanged 事件的 DataGrid。从不同行中选择单元格时会触发它,但如果我从当前行中选择一个单元格,则不会触发该事件。

xml代码:

  <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)

我已经尝试过 SelectionChanged 事件,它(剂量)的工作原理相同。

我是 wpf 的新手,所以也许这是一个简单的问题,任何想法都会很棒。

谢谢

【问题讨论】:

【参考方案1】:

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

查看MSDN 文档

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

您可以将自己连接到另一个事件(例如:MouseDown / Clicked),获取已单击的单元格,然后执行您必须执行的操作。

我建议阅读这篇文章:Detecting clicked cell and row

【讨论】:

以上是关于c# wpf grid - SelectedCellsChanged 不会为同一行中的单元格触发的主要内容,如果未能解决你的问题,请参考以下文章

WPF C# 如何在动态添加的grid控件中添加某个网格中的image控件的单击事件?

c# wpf grid - SelectedCellsChanged 不会为同一行中的单元格触发

c# WPF 中把grid控件分成了2*2的四小块,每块中显示传过来的视频,要是传过来7个视频,我就得实现翻页,

WPF C#代码中引用XAML中的控件

不显示删除回复显示所有回复显示星级回复显示得分回复 WPF中C#代码生成窗体并添加Grid问题

C# wpf 实现任意控件拖动