1

我有一个绑定到 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 在数据变化时保持数据顺序?

4

2 回答 2

2

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

于 2012-06-19T17:36:54.433 回答
0

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

于 2012-06-14T12:38:25.570 回答