I need to programmatically create a DataGrid and need to add a double click row event to it. How is this done in C#? I found this;
myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick);
Although this does not work for me since I am binding the DataGrid.ItemsSource
to a collection and not manually adding in the rows.
You can do that in XAML by adding default style for DataGridRow under its resources section and declare event setter over there:
<DataGrid> <DataGrid.Resources> <Style TargetType="DataGridRow"> <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/> </Style> </DataGrid.Resources> </DataGrid>
OR
In case want to do it in code behind. Set x:Name
on grid, create style programatically and set the style as RowStyle.
<DataGrid x:Name="dataGrid"/>
and in code behind:
Style rowStyle = new Style(typeof(DataGridRow)); rowStyle.Setters.Add(new EventSetter(DataGridRow.MouseDoubleClickEvent, new MouseButtonEventHandler(Row_DoubleClick))); dataGrid.RowStyle = rowStyle;
AND
There is example of event handler:
private void Row_DoubleClick(object sender, MouseButtonEventArgs e) { DataGridRow row = sender as DataGridRow; // Some operations with this row }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With