2015-11-30 5 views
1

Я пытаюсь написать некоторые тестовые сценарии для XamDataGrid. В этих сценариях я хотел бы установить группировку на одном поле. Этот код вызывает сетку к группе, как ожидаются, когда я запустить приложение и дважды щелкните таблицу:Как читать сгруппированные записи в XamDataGrid, когда группировка задана программно в тестах?

 Private Sub MyGrid_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles MyGrid.MouseDoubleClick 
     Dim xamDataGrid As XamDataGrid = CType(sender, XamDataGrid) 
     Dim field As Field = xamDataGrid.FieldLayouts(0).Fields("A") 
     Dim fieldSortDescription As New FieldSortDescription With {.Field = field, .Direction = ListSortDirection.Ascending, .IsGroupBy = True} 

     xamDataGrid.FieldLayouts(0).SortedFields.Add(fieldSortDescription) 
    End Sub

В испытаниях, после запуска что-то очень похожего на отчетах и ​​ViewableRecords коллекция не отражают группировку. xamDataGrid.ViewableRecords(0) - это DataRecord, а не GroupByRecord. Вот код из теста:

 <TestMethod()> 
    Public Sub Test() 
     Dim xamDataGrid As New XamDataGrid 

     xamDataGrid.DataSource = dataSource.DefaultView 
     xamDataGrid.BeginInit() 
     xamDataGrid.EndInit() 

     Dim field As Field = xamDataGrid.FieldLayouts(0).Fields("A") 
     Dim fieldSortDescription As New FieldSortDescription With {.Field = field, .Direction = ListSortDirection.Ascending, .IsGroupBy = True} 
     xamDataGrid.FieldLayouts(0).SortedFields.Add(fieldSortDescription) 

     ' exception thrown here because xamDataGrid.ViewableRecords(0) is a DataRecord 
     Dim groupByRecord As GroupByRecord = CType(xamDataGrid.ViewableRecords(0), GroupByRecord) 
     ' ... 
    End Sub

Как сетка будет обновляться или иначе вынуждены отражать группировку, установленный код?

Спасибо за ваше время.

ответ

0

Совершенно случайно я обнаружил, что записи и ViewableRecords коллекции обновляются в тестах с помощью Диспетчера:

<TestMethod()> 
Public Sub Test() 
    Dim xamDataGrid As New XamDataGrid 

    xamDataGrid.DataSource = dataSource.DefaultView 
    xamDataGrid.BeginInit() 
    xamDataGrid.EndInit() 

    Dim field As Field = xamDataGrid.FieldLayouts(0).Fields("A") 
    Dim fieldSortDescription As New FieldSortDescription With {.Field = field, .Direction = ListSortDirection.Ascending, .IsGroupBy = True} 
    xamDataGrid.FieldLayouts(0).SortedFields.Add(fieldSortDescription) 

    ' this line refreshes record collections 
    Dispatcher.CurrentDispatcher.Invoke(New Action(Sub() 
                End Sub), DispatcherPriority.ContextIdle) 

    ' exception not thrown! 
    Dim groupByRecord As GroupByRecord = CType(xamDataGrid.ViewableRecords(0), GroupByRecord) 
    ' ... 
End Sub