这个简单的WPF-DataGrid
<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包含所选对象)。然后重点关注另一个控件。在此状态 - 仍然显示选择 - 当CurrentItem为null时,SelectedItem仍然存在!然后通过使用TAB-Button重新调整焦点。这使得CurrentItem成为第一个在SelectedItem未更改时显示的对象。因此,CurrentItem不会与SelectetItem一起处于可在DataGrid中看到的状态。而且我觉得自己有什么好处......
我的问题是:如何建议DataGrid具有在焦点丢失之前选择的相同CurrentItem?如何同步CurrentItem和SelectedItem?
我希望有一个简单的解决方案!你会帮助我很多。提前谢谢......
答案 0 :(得分:3)
通常我会将SelectedItem
绑定到DataContext
中的属性,并将IsSynchronizedWithCurrentItem
设置为false。
<DataGrid ItemsSource="{Binding SomeCollection}"
SelectedItem="{Binding SelectedItem}" />
将IsSyncrhonizedWithCurrentItem设置为true会使控件的SelectedItem
与集合的CurrentItem
属性同步,但是由于我不知道,我遇到了这个问题总是理解CurrentItem
如何获得并保持其价值。
答案 1 :(得分:0)
解决此问题的两种方法:
使用Microsoft支持记录错误报告,说明当您使用TAB时,IsSynchronizedWithCurrentItem始终不起作用。
将SelectedItem绑定到当前单元格的行,该行存储在CurrentCell的Item属性中:
<DataGrid SelectedItem="{Binding RelativeSource={RelativeSource Self}, Path=CurrentCell.Item, Mode=OneWay}" />