Como es a menudo la forma que he encontrado mi propia solución para esto:
Añadir un evento MouseLeftButtonUp a la cuadrícula de datos:
<data:DataGrid x:Name="dgTaskLinks"
ItemsSource="{Binding TaskLinks}"
SelectedItem="{Binding SelectedTaskLink, Mode=TwoWay}"
MouseLeftButtonUp="dgTaskLinks_MouseLeftButtonUp"
>...
Y walk the visual tree para obtener la fila de la cuadrícula de datos:
private void dgTaskLinks_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
///get the clicked row
DataGridRow row = MyDependencyObjectHelper.FindParentOfType<DataGridRow>(e.OriginalSource as DependencyObject);
///get the data object of the row
if (row != null && row.DataContext is TaskLink)
{
///toggle the IsSelected value
(row.DataContext as TaskLink).IsSelected = !(row.DataContext as TaskLink).IsSelected;
}
}
Una vez encontrado, es un enfoque simple para alternar la propiedad IsSelected enlazado :-)
Espero que esto ayude a otra persona.
¿Desea alternar cuándo se hace clic en la fila nuevamente? ¿Hay algún lugar en la fila donde el clic no debería tener este efecto? – AnthonyWJones