2012-02-15 1 views
4

포커스를 다시 가져올 때 이상한 방법으로 문제가없는 바인더 제본 목록을 보여줍니다 동작이 간단한 WPF - 데이터 그리드데이터 그리드의 CurrentItem = selectedItem가 탭 버튼

<DataGrid AutoGenerateColumns="False" Height="300" HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" Name="dgOriginal" Margin="4,12,0,0" 
     CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" IsSynchronizedWithCurrentItem="True" 
     CanUserSortColumns="False" SelectionMode="Single" SelectionUnit="FullRow"> 
<DataGrid.Columns> 
    <DataGridCheckBoxColumn x:Name="col2Checked"/> 
    <DataGridTextColumn x:Name="col2Name"/> 
    <DataGridTextColumn x:Name="col2Vorname"/> 
</DataGrid.Columns>    

에 재입국 후! 모든 우선 DataGrid가 선택한 방법 (SelectedItem 및 CurrentItem에 선택된 객체 포함)에서 해당 행을 표시하게하는 행이 사용자에 의해 선택됩니다. 그런 다음 다른 컨트롤에 초점이 맞춰집니다. 이 상태에서 - 선택 항목은 여전히 ​​표시됩니다. - SelectedItem은 CurrentItem이 null 인 동안 계속 표시됩니다! 그런 다음 TAB 단추를 사용하여 다시 초점을 맞 춥니 다. 이렇게하면 CurrentItem이 SelectedItem이 변경되지 않은 동안 표시되는 첫 번째 개체가됩니다. 따라서 CurrentItem은 DataGrid에서 볼 수있는 상태의 SelectetItem과 함께 사용되지 않습니다. 그리고 내 생각에 그게 좋을 것 같아. ...

내 생각은 : 포커스가 사라지기 전에 선택된 동일한 CurrentItem을 갖도록 DataGrid에 조언하는 방법은 무엇입니까? 그리고 CurrentItem과 SelectedItem을 어떻게 동기화 할 수 있습니까?

간단한 해결책이되기를 바랍니다. 너 나를 많이 도울거야. 사전에 감사드립니다 ...

답변

2

일반적으로 SelectedItem의 속성에 DataContext을 바인딩하고 IsSynchronizedWithCurrentItem을 false로 설정합니다.

<DataGrid ItemsSource="{Binding SomeCollection}" 
      SelectedItem="{Binding SelectedItem}" /> 

true로 IsSyncrhonizedWithCurrentItem을 설정하면 항상 CurrentItem 가져 및 유지 관리 방법을 이해하지 않기 때문에이와, 너무 컨트롤의 SelectedItem 콜렉션의 CurrentItem 특성과 동기화 그러나 내가 했어 문제를 만들 것입니다 그것의 가치. 이 문제를 해결하려면

+0

여러분의 도움에 감사드립니다! 그러나 당신의 제안으로는 문제를 해결할 수 없다는 것이 두려워합니다. 첫 번째 열에는 탭 버튼으로 다시 진입 한 후 CurrentItem 행을 표시하는이 추악한 작은 상자가 계속 표시됩니다. 사용자가 키보드를 사용하여 DataGrid에서 탐색하면 선택한 행이 CurrentItem 행으로 변경되고 SelectedItem이 항상 CurrentItem을 따르는 것처럼 보입니다. – navigato

0

두 가지 방법 :

  1. 로그인하면 TAB을 사용할 때 IsSynchronizedWithCurrentItem 항상 작동하지 않는다는 Microsoft 기술 지원과 버그 리포트,.

  2. 바인드 CurrentCell의 항목 속성에 저장되어있는 현재 셀의 행에의 selectedItem :

    <DataGrid SelectedItem="{Binding RelativeSource={RelativeSource Self}, Path=CurrentCell.Item, Mode=OneWay}" />