我有一个简单的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在数据发生变化时维护数据的顺序?
答案 0 :(得分:2)
一个选项是使用PagedCollectionView而不是ObservableCollection。您可以更好地控制无效和重新应用排序和过滤。
答案 1 :(得分:0)
尝试设置Mode=TwoWay
例如: - Binding="{Binding agentName, Mode=TwoWay}"