c# WPF通过单个处理程序处理来自多个动态生成数据网格的双击事件

本文关键字:处理 数据网 数据 网格 事件 双击 动态 WPF 单个 程序 | 更新日期: 2023-09-27 18:11:25

在我当前的实现中,我动态地生成选项卡和网格。

基本上,需要通过双击前一个网格的任意一行来创建一个新网格,并使用行数据进行其他处理。

this.AddHandler(DataGrid.MouseDoubleClickEvent, new RoutedEventHandler    (Generic_DoubleClick));    

处理任何双击,甚至在网格之外,而不是针对网格。

我需要找到一个处理程序,可以返回行值专门到该网格。请建议一个解决方法或更简单的方法。

谢谢。

c# WPF通过单个处理程序处理来自多个动态生成数据网格的双击事件

处理来自数据网格的数据网格行的双击路由事件。

   <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在单元格。