这个简单的 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>
它显示了一个没有问题的绑定列表,当重新获得焦点时,其行为方式很奇怪:
首先,用户选择一行,这使得数据网格以所选方式显示该行(SelectedItem 和 CurrentItem 包含所选对象)。然后焦点被赋予另一个控件。在此状态下 - 仍然显示选择 - SelectedItem 仍然存在,而 CurrentItem 为空!然后使用 TAB 按钮返回焦点。这使得 CurrentItem 成为在 SelectedItem 未更改时显示的第一个对象。因此,在 DataGrid 中看到的那种状态下,CurrentItem 不会与 SelectetItem 一起出现。我心里想这有什么好处......
我的问题是:如何建议 DataGrid 具有与失去焦点之前选择的相同的 CurrentItem?如何同步 CurrentItem 和 SelectedItem?
我希望有一个简单的解决方案!你会给我很多帮助。提前致谢...
通常我绑定SelectedItem
到位于DataContext
,并设置IsSynchronizedWithCurrentItem
为假。
<DataGrid ItemsSource="{Binding SomeCollection}"
SelectedItem="{Binding SelectedItem}" />
Setting 与当前项目同步 http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.issynchronizedwithcurrentitem.aspx为 true 将使之如此SelectedItem
控制的同步与CurrentItem
集合的属性,但是我对此有疑问,因为我并不总是明白如何CurrentItem
获得并保持其价值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)