以编程方式双击 WPF 数据网格行事件

本文关键字:数据网 网格 事件 数据 WPF 编程 方式 双击 | 更新日期: 2023-09-27 17:56:11

我需要以编程方式创建一个 DataGrid,并且需要向其添加双击行事件。 如何在 C# 中完成此操作? 我找到了这个;

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

尽管这对我不起作用,因为我将DataGrid.ItemsSource绑定到集合而不是手动添加行。

以编程方式双击 WPF 数据网格行事件

可以在 XAML 中执行此操作,方法是在其资源部分下为 DataGridRow 添加默认样式,并在此处声明事件设置器

<DataGrid>
    <DataGrid.Resources>
        <Style TargetType="DataGridRow">
            <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/>
        </Style>
    </DataGrid.Resources>
</DataGrid>

以防万一想在代码后面做。在网格上设置x:Name,以编程方式创建样式并将样式设置为 RowStyle。

<DataGrid x:Name="dataGrid"/>

在代码隐藏中:

Style rowStyle = new Style(typeof(DataGridRow));
rowStyle.Setters.Add(new EventSetter(DataGridRow.MouseDoubleClickEvent,
                         new MouseButtonEventHandler(Row_DoubleClick)));
dataGrid.RowStyle = rowStyle;

有事件处理程序的示例:

  private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
  {
     DataGridRow row = sender as DataGridRow;
     // Some operations with this row
  }