维护Silverlight数据网格中的排序顺序

时间:2012-06-11 15:55:16

标签: c# silverlight

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

<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在数据发生变化时维护数据的顺序?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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