2013-02-05 118 views
1

我試圖單元測試類,並且該類使用XamDataGrid單元測試和排序事件

我的問題是我的代碼應觸發排序從XamDataGrid排序事件,但它並不:我缺少什麼?

在這裏,我如何創建網格:

public static class XamDataGridObjectMother 
{ 
    public static XamDataGrid CreateGrid(params string[] columns) 
    { 
     var grid = new XamDataGrid(); 

     var layout = new FieldLayout(); 
     grid.FieldLayouts.Add(layout); 

     int i = 0; 
     foreach (var column in columns) 
     { 
      var field = new Field(column, typeof(string), column+" Label"); 
      field.Column = i; 
      field.Width = new FieldLength(100); 
      field.Name = column; 
      layout.Fields.Add(field); 
      i++; 
     } 

     var data = new List<XamDataGridFakeItem>(); 
     data.Add(new XamDataGridFakeItem("P1", "A1")); 
     data.Add(new XamDataGridFakeItem("P2", "A1")); 
     data.Add(new XamDataGridFakeItem("P3", "A1")); 
     data.Add(new XamDataGridFakeItem("P4", "A2")); 
     data.Add(new XamDataGridFakeItem("P5", "A2")); 
     data.Add(new XamDataGridFakeItem("P6", "A2")); 

     foreach (var xamDataGridFakeItem in data) 
     { 
      grid.DataItems.Add(xamDataGridFakeItem); 
     } 

     return grid; 
    } 

    public class XamDataGridFakeItem 
    { 
     public XamDataGridFakeItem(string portfolio, string area) 
     { 
      Portfolio = portfolio; 
      Area = area; 
     } 

     public string Portfolio { get; set; } 

     public string Area { get; set; } 
    } 
} 

這裏是我的單元測試的一部分,我programmaticaly分揀添加到網格,它應該提出一個排序/排序事件(可能都):

var sortDescription = new FieldSortDescription("Portfolio", ListSortDirection.Descending, false); 

_dataGrid.FieldLayouts[0].SortedFields.Add(sortDescription); // That should trigger the event(s)! 

當然_dataGrid是在我的對象母類顯示在上面的其他地方初始化。

所以我的問題,如果它不是已經很明顯,就是我加入一個排序字段應該觸發排序/排序事件(它應該排序網格),但它沒有,我找不到任何(programaticaly)強迫它排序網格並激發這些事件。

我錯過了什麼?

回答

1

SortingSorted事件僅在響應用戶交互時被觸發,因此預計在對代碼中的網格進行排序時它們不會觸發。

如果你需要看什麼字段通過網格進行排序,你會檢查相關FieldLayout.SortedFields集合,看看哪些字段進行排序。

注意,如果您的測試是驗證排序是成功的,它可能是更好地在網格檢查的記錄的順序,而不是檢查解僱的事件。