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个视频,我就得实现翻页,