Подтвердить что ты не робот

WPF DataGrid - двукратное событие двойного щелчка

Мне нужно программно создать DataGrid и добавить к нему событие с двойным щелчком. Как это делается на С#? Я нашел это;

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);

Хотя это не работает для меня, так как я привязываю DataGrid.ItemsSource к коллекции, а не вручную добавляю в строки.

4b9b3361

Ответ 1

Вы можете сделать это в 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
  }