I know how to use the MouseDoubleClick event with my DataGrid to grab the selectedvalue, but how would one go about using command bindings instead? That way my ViewModel can handle the logic.
So far I have the following:
<DataGrid Name="TestGrid" Grid.Row="2" Grid.ColumnSpan="2" AutoGenerateColumns="True" MouseDoubleClick="TestGrid_MouseDoubleClick"
ItemsSource="{Binding Registrations}" SelectedValue="{Binding CurrentRegistration}" IsReadOnly="True" AlternationCount="2" GridLinesVisibility="None">
I want to get rid of MouseDoubleClick and replace it appropriately.
Use this library
Sample binding to datagrid event:
But this code is better, because raises on row clicks only:
No need for attached behaviors or custom DataGrid subclasses here.
In your
DataGrid
, bindItemsSource
to anICollectionView
. The trick here is to setIsSynchronizedWithCurrentItem="True"
which means the selected row will be the current item.The second part of the trick is to bind
CommandParameter
to the current item with the forward slash syntax.When a row is double clicked, the command will be executed with the clicked row as argument.
This is how a (simplified) version of the view model would look:
Another solution is to add input bindings, and to bind the selectedItem to a property so you'll know which one was selected:
Or, you could create a derived class
and in XAML simply bind to the newly created command