【问题标题】:Maintaining sort order in a Silverlight datagrid在 Silverlight 数据网格中维护排序顺序
【发布时间】:2012-06-11 15:55:15
【问题描述】:

我有一个绑定到 ObservableCollection 对象的简单 Silverlight 5 数据网格:

<sdk:DataGrid x:Name="grid_test" AutoGenerateColumns="False" Grid.Row="1" Height="268" HorizontalAlignment="Left" Margin="16,186,0,0" VerticalAlignment="Top" Width="744">
            <sdk:DataGrid.Columns>
                <sdk:DataGridTextColumn Header="Agent Name" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding agentName}"  />
                <sdk:DataGridTextColumn Header="Campaign" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding currentCampaign}"  />

                <sdk:DataGridTextColumn Header="Currently" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding currentState}"  />
                <sdk:DataGridTextColumn Header="Time" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Binding="{Binding displayTime}"  />

            </sdk:DataGrid.Columns>
        </sdk:DataGrid>

在代码中:

grid_test.ItemsSource = allKnownAgents;

.. 它工作正常,数据会自动显示和更新,用户可以通过单击列标题对数据进行排序。但是,当数据发生变化时,网格不会自动恢复——这意味着排序顺序没有得到严格维护。用户需要再次点击列标题手动重新排序数据。

是否有任何简单的方法可以要求/告诉 Silverlight 在数据变化时保持数据的顺序?

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

    一个选项是使用PagedCollectionView 代替 ObservableCollection。您可以更好地控制无效和重新应用排序和过滤。

    【讨论】:

    • 我正朝着那条路前进;但是,如果我发出 PagedCollectionView.Refresh(),网格将失去它的垂直滚动位置 - 例如,用户将向下滚动到网格的底部, Refresh() 触发,然后当他们移动滚动条它跳到了顶部。有什么办法可以避免这种行为?
    • 为了回答我自己的问题,我已禁用 DataGrids 自己的滚动并将其包装在 ScrollViewer 中。这似乎解决了这个特定问题,现在尝试“修复”排序......
    • 耶 - 绑定到 PagedCollectionView 并强制 Refresh() 似乎也“修复”了排序顺序。谢谢!
    【解决方案2】:

    尝试设置 Mode=TwoWay 例如:- Binding="{Binding agentName, Mode=TwoWay}"

    【讨论】:

    • 恐怕这并不能解决任何问题 - 随着数据的变化,数据仍然会出现乱序。
    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 2012-08-11
    • 2010-12-30
    相关资源
    最近更新 更多