2013-07-09 2 views
0

MVVM에서 작업 할 때 WPF DataGrid에 표시되는 데이터 객체를 알 수있는 방법이 있습니까? 개체 모델로 바인딩 한 DataGrid에는 많은 필터 작업이 있으며 선택한 필터에 따라 필터링 된 데이터 만 표시됩니다. 최적화 문제를 해결해야합니다. 문제에 대한 간단한 설명이 여기에 설명되어 있습니다.MVVM의 WPF DataGrid에 표시되는 데이터

원격 통신 중에 DataGrid에 바인딩 된 모든 데이터를 GSM 모뎀을 통해 원격 장치로 보냅니다. 대부분의 경우 DataGrid에 바인딩 된 데이터가 너무 많기 때문에 (특정 필터를 선택한 후에도) 통신을 최적화하기 위해 현재 표시된 데이터 만 보내려고했습니다.

누군가 더 자세한 정보가 필요한지 설명 할 수 있습니다.

DataGrid가 WPF의 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> 

감사

+0

샘플 코드를 참조하십시오. ? – JSJ

+0

DataGrid 용 WPF 코드를 추가했습니다. FilteredRecords는 레코드 항목의 ObservableCollection입니다. – Irfan

+0

어떤 Thirdparty DataGrid입니까? – JSJ

답변

0

나는 문제에 대한 아이디어를 가지고있다. LoadingRow 및 UnloadingRow 이벤트를 사용하고로드 된 행에서 원격 장치로 보낼 데이터를 가져올 수 있습니다. 이러한 이벤트는 DataGrid를 스크롤하는 경우에만 실행되므로 통신 레이어에서 보이지 않는 데이터를 제거하고 새로 표시되는 데이터를 등록하여 통신 할 수 있습니다. DataGrid 인구에서 이벤트가 발생하지 않으므로이 특수한 scenerio를 관리해야합니다.

관심있는 아이디어는 here입니다.