web-dev-qa-db-ja.com

WPF DataGrid行のダブルクリックイベントをプログラムで

プログラムでDataGridを作成し、ダブルクリック行イベントを追加する必要があります。これはC#でどのように行われますか?私はこれを見つけました;

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

DataGrid.ItemsSourceをコレクションにバインドし、手動で行を追加しないため、これは機能しませんが。

32
Xaphann

XAMLでこれを行うには、リソースセクションの下にDataGridRowのデフォルトスタイルを追加し、イベントセッターを宣言しますを追加します。

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

[〜#〜] or [〜#〜]

コードビハインドで実行したい場合。グリッドで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;

[〜#〜] and [〜#〜]

イベントハンドラの例があります。

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