私は自分のコメントに答えます、そしてそれはおそらく他の人にも役立つでしょう。次のMSDNエントリは、問題を説明および解決します。http:
//social.msdn.microsoft.com/Forums/vstudio/en-US/2cde5655-4b8d-4a12-8365-bb0e4a93546f/activating-input-controls-inside-datagrids- rowdetailstemplate-with-single-click?forum = wpf
問題は、常に表示される行の詳細では、最初にフォーカスを取得する必要があることです。この問題を回避するには、データグリッドプレビューハンドラーが必要です。
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource {x:Type DataGridRow}}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="SelectRowDetails"/>
</Style>
</DataGrid.RowStyle>
注:現在使用されているものを継承するためにカスタムDataGridRowスタイルを破壊したため、拡張しました。
ハンドラー自体は
private void SelectRowDetails(object sender, MouseButtonEventArgs e)
{
var row = sender as DataGridRow;
if (row == null)
{
return;
}
row.Focusable = true;
row.Focus();
var focusDirection = FocusNavigationDirection.Next;
var request = new TraversalRequest(focusDirection);
var elementWithFocus = Keyboard.FocusedElement as UIElement;
if (elementWithFocus != null)
{
elementWithFocus.MoveFocus(request);
}
}
行の詳細のコンテンツにフォーカスを設定し、クリック2回の問題を解決します。
注:これはすべてMSDNスレッドから取得したものであり、私自身の解決策ではありません。