두 번째 DataGrid를 rowdetailstemplate로 사용할 때 내 DataGrid에서 이상한 동작이 발생합니다. 기본 DataGrid는 내 항목 모음에 바인딩되며 세부 DataGrid는 항목에 포함 된 하위 항목 모음에 바인딩됩니다. 이제이 모든 것이 완벽하게 렌더링되었지만 SubItemsGrid의 셀을 직접 클릭하려면 먼저 SubItemsGrid가 포함 된 기본 그리드의 행의 첫 번째 셀을 선택합니다. 셀을 선택하려면 두 번 클릭해야합니다.RowDetailsTemplate 안에있는 WPF DataGrid의 셀 선택
다른 사람도이 질문에 답변 했습니까? 그렇다면 해결 방법이 있습니까?
이
은 (부분적으로) 내 마크 업입니다 :<DataGrid x:Name="ItemGrid" ItemsSource="{Binding Path=Items}" AutoGenerateColumns="False" SelectionUnit="Cell"
RowDetailsVisibilityMode="Visible" CanUserResizeRows="False" AreRowDetailsFrozen="False" VerticalAlignment="Top"
CanUserAddRows="False" CanUserDeleteRows="False" VerticalScrollBarVisibility="Hidden">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" Binding="{Binding Path=ID}" Width="350"/>
<DataGridTextColumn Header="Column2" Binding="{Binding Path=Name}" Width="80"/>
<DataGridTextColumn Header="Column3" Binding="{Binding Path=Description}" Width="80"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid x:Name="SubItemsGrid" ItemsSource="{Binding Path=SubItems}" AutoGenerateColumns="False"
SelectionUnit="Cell" HeadersVisibility="None" Margin="50,0,0,0" VerticalAlignment="Top" CanUserAddRows="False"
CanUserResizeRows="False" CanUserDeleteRows="False" BorderThickness="0">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" Binding="{Binding Path=Name}" Width="300" />
<DataGridTextColumn Header="Column2" Binding="{Binding Path=Description}" Width="80"/>
<!-- Etc.-->
--- 편집 ---
좋아, 나는 SubItemsGrid에서 마우스 업 이벤트를 처리하기 위해 아이디어를 내놓았다
private void SubItemsGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
DataGrid selectedGrid = sender as DataGrid;
if (selectedGrid != null)
{
selectedGrid.Focus()
}
}
디버깅은 '초점'방법은 바로 그리드에 호출되는 것을 보여 주지만, 나는 어떤 시각적 인 결과를 얻고 있지 않다 : 다음과 같이 코드에서 SubItemsGrid에 포커스를 설정합니다. 그러나 나는 그 해결책에 매우 가깝다고 느끼고 있습니다. 누군가?
첫 번째 클릭을 삼키는 것은 어린이 눈금이 아니더라도 본 적이있는 내용입니다. 또한 [이 sliverlight.net 스레드] (http://forums.silverlight.net/forums/p/208961/491280.aspx)에 댓글을 달았습니다. 나는 그것에 대한 일반적인 해결책을 아직 풀지 않았다. –