Comme souvent la façon dont je l'ai trouvé ma propre solution pour cela:
Ajouter un événement MouseLeftButtonUp au DataGrid:
<data:DataGrid x:Name="dgTaskLinks"
ItemsSource="{Binding TaskLinks}"
SelectedItem="{Binding SelectedTaskLink, Mode=TwoWay}"
MouseLeftButtonUp="dgTaskLinks_MouseLeftButtonUp"
>...
Et walk the visual tree pour obtenir la ligne de grille de données:
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;
}
}
Une fois trouvé, il s'agit d'une approche simple pour basculer la propriété IsSelected liée :-)
Espérons que cela aide quelqu'un d'autre.
Voulez-vous basculer lorsque la ligne est de nouveau cliquée? Y at-il quelque part sur la ligne où le clic ne devrait pas avoir cet effet? – AnthonyWJones