0

MVVM で作業しているときに、WPF DataGrid でどのデータ オブジェクトが表示されるかを知る方法はありますか? オブジェクト モデルにバインドした DataGrid には多くのフィルター操作があり、選択したフィルターに応じてフィルター処理されたデータのみが表示されます。最適化問題を解かなければなりません。ここでは、問題の簡単な説明を説明します。

リモート通信中に、DataGrid にバインドされたすべてのデータを GSM モデム経由でリモート デバイスに送信しています。ほとんどの場合、DataGrid にバインドされたデータが多すぎるため (特定のフィルターを選択した後でも)、通信を最適化するために現在表示されているデータのみを送信しようとしていました。

詳細が必要な場合は説明できます。

WPF で DataGrid を Items Source にバインドする方法を次に示します。

        <toolkitControls:AdvancedDataGrid x:Name="RecordEditorTable"
                                      Grid.Column="2" Grid.Row="2" Grid.RowSpan="2" 
                                      Style="{StaticResource {x:Type DataGrid}}"
                                      AutoGenerateColumns="False"
                                      SelectionMode="Extended"
                                      CanUserDeleteRows="False"
                                      ItemsSource="{Binding FilteredRecords}"
                                      ScrollViewer.CanContentScroll="True"
                                      cal:Message.Attach="[BeginningEdit] =  [BeginningEditing($eventArgs)]; [RowEditEnding] = [RowEditEnding($eventArgs)]; [SelectionChanged] = [RecordEditorTable_SelectionChanged($eventArgs)]; 
                                      AllowDrop="True">...</toolkitControls:AdvancedDataGrid>

ありがとう

4

1 に答える 1

0

私は問題に対する考えを持っています。LoadingRow および UnloadingRow イベントを使用し、ロードされた行からリモート デバイスに送信するデータを取得できます。これらのイベントは、データグリッドのスクロール時にのみ発生するため、通信レイヤーから非表示データを削除し、通信用に新たに表示されるデータを登録できます。イベントは DataGrid の人口に対して発生しないため、この特別なシーンを管理する必要があります。

興味のある人のためのいくつかのアイデアはここにあります。

于 2013-07-12T09:24:01.613 に答える