在DataGrid中对Column进行排序时,ItemsSource属性实际上没有排序,但Items属性会这样做。 ItemsSource绑定到我的视图模型中的ObservableCollection,但Items属性只有一个getter,因此它不允许我像使用ItemsSource那样绑定它。
我有一个ResultsView,然后是一个ItemView; ResultsView包含带有绑定ItemsSource的DataGrid,ItemView显示DataGrid中当前选定的项目。我在ItemView中有一个下一个和上一个按钮,它允许用户遍历DataGrid(在集合中给出它们的下一个/上一个项目),但我的问题是当它在列上排序时,下一个或前一个项目不是它们在DataGrid中的位置。
e.g。
未分类的项目:[0],[1],[2],[3],[4],[5] - 下一个和上一个为您提供DataGrid中显示的下一个/上一个项目
排序项目:[3],[0],[4],[5],[1],[2] - 如果用户在ItemView中打开[3]并点击下一步,则[4]将打开[0],因为我只是给他们ItemsSource中的下一个项目。
Items属性保存已排序的ItemsSource,所以如果我能以某种方式绑定到这个,那么我可以给它们那个集合中的下一个/上一个项目。
<customControls:CustomDataGrid x:Name="GridControl"
DataContext="{Binding CustomDataGridViewModel}"
Items="{Binding SortedResults, Mode=OneWayToSource}"
ItemsSource="{Binding DataContext.DataGridResults, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
SelectedItem="{Binding DataContext.SelectedReferral, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
Style="{DynamicResource MetroDataGrid}"
AutoGenerateColumns="False"
IsReadOnly="False"
BeginningEdit="GridControl_OnBeginningEdit"
CanUserAddRows="False"
ColumnInfoCollection="{Binding ColumnInfoCollection}"
Grid.Row="1"
BorderBrush="{DynamicResource AccentColorBrush3}"
BorderThickness="2,0,2,2">
&#34;该物业&#34;物品&#34;没有可访问的getter&#34;
答案 0 :(得分:0)
你不能一起使用Items和ItemsSource绑定......!
您必须使用CollectionVew并管理其上的排序,然后管理分页.... datagrid无法在分页数据源上正确管理排序
再见