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

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

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

最佳答案

您可以在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
  }

10-08 11:45