c# WPF通过单个处理程序处理来自多个动态生成数据网格的双击事件
本文关键字:处理 数据网 数据 网格 事件 双击 动态 WPF 单个 程序 | 更新日期: 2023-09-27 18:11:25
在我当前的实现中,我动态地生成选项卡和网格。
基本上,需要通过双击前一个网格的任意一行来创建一个新网格,并使用行数据进行其他处理。
this.AddHandler(DataGrid.MouseDoubleClickEvent, new RoutedEventHandler (Generic_DoubleClick));
处理任何双击,甚至在网格之外,而不是针对网格。
我需要找到一个处理程序,可以返回行值专门到该网格。请建议一个解决方法或更简单的方法。
谢谢。
处理来自数据网格的数据网格行的双击路由事件。
<tk:DataGrid>
<tk:DataGrid.Resources>
<Style TargetType="{x:Type tk:DataGridRow}">
<EventSetter Event="MouseDoubleClick"
Handler="DataGridRow_MouseDoubleClick"/>
</Style>
</tk:DataGrid.Resources>
<tk:DataGrid.ItemsSource>
<x:Array Type="{x:Type TextBlock}">
<TextBlock Text="1" Tag="1.1"/>
<TextBlock Text="2" Tag="1.2"/>
<TextBlock Text="3" Tag="1.3"/>
<TextBlock Text="4" Tag="1.4"/>
</x:Array>
</tk:DataGrid.ItemsSource>
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="Text" Binding="{Binding Text}"/>
<tk:DataGridTextColumn Header="Tag" Binding="{Binding Tag}"/>
</tk:DataGrid.Columns>
</tk:DataGrid>
后面的代码 private void DataGridRow_MouseDoubleClick(
object sender, MouseButtonEventArgs e)
{
var dgRow = sender as Microsoft.Windows.Controls.DataGridRow;
var cellContentElement = e.OriginalSource as UIElement;
}
奖励是cellContentElement
是在行上双击的单元格的内容元素…例如,在DataGridTextColumn
的情况下,它将是TextBlock
在单元格。