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

1 つのオプションは、ObservableCollection の代わりにPagedCollectionViewを使用することです。並べ替えとフィルタリングの無効化と再適用をより細かく制御できます。

于 2012-06-19T17:36:54.433 に答える
0

を設定してみてください。Mode=TwoWay例:-Binding="{Binding agentName, Mode=TwoWay}"

于 2012-06-14T12:38:25.570 に答える