Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Silverlight数据网格中维护排序顺序_C#_Silverlight - Fatal编程技术网

C# 在Silverlight数据网格中维护排序顺序

C# 在Silverlight数据网格中维护排序顺序,c#,silverlight,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:

我有一个简单的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>
。。它工作正常,数据会自动显示和更新,用户可以通过单击列标题对数据进行排序。然而,当数据发生变化时,网格不会自动使用,这意味着排序顺序没有得到严格的维护。用户需要再次单击列标题以手动重新排序数据


有什么简单的方法可以要求/告诉Silverlight在数据更改时保持数据的顺序吗?

尝试设置,
Mode=TwoWay
例如:-
Binding=“{Binding agentName,Mode=TwoWay}”
一个选项是使用。您可以更好地控制无效和重新应用排序和筛选。

我担心这并不能解决任何问题-数据在更改时仍然会出现混乱;但是,如果我发出PagedCollectionView.Refresh(),网格将失去其垂直滚动位置-例如,用户将向下滚动到网格的底部,Refresh()将触发,然后当他们移动滚动条时,它会跳到顶部。有没有办法避免这种行为?为了回答我自己的问题,我已经禁用了DataGrids自己的滚动,并将其包装在ScrollViewer中。这似乎解决了这个特殊的问题,现在尝试“修复”排序…是的,绑定到PagedCollectionView并强制刷新()似乎也“修复”了排序顺序。谢谢
grid_test.ItemsSource = allKnownAgents;