Frage WPF DataGrid-Zeilen-Doppelklick-Ereignis programmgesteuert


Ich muss ein DataGrid programmgesteuert erstellen und muss ein Double-Click-Zeilenereignis hinzufügen. Wie wird das in C # gemacht? Ich habe das gefunden;

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

Obwohl dies für mich nicht funktioniert, da ich die Bindung bin DataGrid.ItemsSource zu einer Sammlung und nicht manuell in den Zeilen hinzufügen.


28
2018-04-01 15:24


Ursprung


Antworten:


Sie können das in XAML tun, indem Sie hinzufügen Standard-Stil für DataGridRow unter seinen Ressourcen Abschnitt und Ereignis-Setter zu deklarieren da drüben:

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

ODER

Für den Fall, dass es im Code hinterher geht. einstellen x:Name Erstellen Sie im Raster programmatisch Stil und legen Sie den Stil als RowStyle fest.

<DataGrid x:Name="dataGrid"/>

und im Code dahinter:

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

UND

Es gibt ein Beispiel für einen Event-Handler:

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

60
2018-04-01 16:37