Vous pouvez ajouter un style pour DataGridRow dans le composant DataDrid de RowDetails et vous abonner à l'événement MouseDoubleClick à partir de là.
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Name="dataGrid1Details" ItemsSource="{Binding Path=PossibleCandidates}" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="DetailedDataGridRow_MouseDoubleClick"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Similarity" Binding="{Binding Path=Key}"/>
<DataGridTextColumn Header="Possible New Link Source" Binding="{Binding Path=Value}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
code
derrière, EventHandler simple,
// Fill cell data.. You can access the values like this
void DetailedDataGridRow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DataGridRow clickedDataGridRow = sender as DataGridRow;
// Details: clickedDataGridRow.Item
// Main DataGrid: dataGrid1.SelectedItem
}
Mise à jour
Les RowDetails et l'DataGridRow sont connectés, en quelque sorte. RowDetails se trouve dans DataGridRow dans VisualTree, il y a donc plusieurs façons d'y accéder (événements, marche VisualTree etc.) mais je ne pense pas qu'il existe une propriété ou quelque chose comme ça qui vous donne un accès direct (pour autant que je sache). Capture d'écran de Snoop montrant la DataGridDetailsPresenter dans un DataGridRow
@VVS: Ou ai-je missunderstand la question? –
Je dois admettre que j'ai déménagé avec un autre projet et n'ai pas revisité ce problème. Ce que je ne comprends toujours pas, c'est comment un DataGridRow et les RowDetails sont connectés. Est-ce que le seul moyen de trouver la ligne associée en utilisant l '"expéditeur" d'un événement, comme votre solution l'a montré? – VVS