web-dev-qa-db-fra.com

Événement de double-clic de ligne WPF DataGrid par programme

J'ai besoin de créer un DataGrid par programme et de lui ajouter un événement de ligne à double-clic. Comment cela se fait-il en C #? J'ai trouvé ça;

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

Bien que cela ne fonctionne pas pour moi car je lie le DataGrid.ItemsSource à une collection et ne pas ajouter manuellement dans les lignes.

32
Xaphann

Vous pouvez le faire dans XAML en ajoutant style par défaut pour DataGridRow dans sa section ressources et déclarer le générateur d'événements là-bas:

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

OU

Dans le cas où vous voulez le faire en code derrière. Ensemble x:Name sur la grille, créez le style par programme et définissez le style comme RowStyle.

<DataGrid x:Name="dataGrid"/>

et en code derrière:

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

ET

Il existe un exemple de gestionnaire d'événements:

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