Модульное тестирование с XamDataGrid и событием Sorting

Я пытаюсь выполнить модульное тестирование класса, и этот класс использует XamDataGrid.

Моя проблема в том, что мой код должен инициировать событие Sorted или Sorting из 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; }
    }
}

А вот часть моего модульного теста, где я программно добавляю сортировку в сетку и где она должна вызвать событие Sorted/Sorting (возможно, оба):

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

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

Конечно, _dataGrid инициализируется где-то еще с моим родительским классом объекта, показанным выше.

Итак, моя проблема, если это уже не очевидно, заключается в том, что добавление отсортированного поля ДОЛЖНО вызывать событие Sorted/Sorting (оно должно сортировать сетку), но это не так, и я не могу найти любой способ (программно) заставить его сортировать сетку и запускать эти события.

Что мне не хватает?


person Antoine Jaussoin    schedule 05.02.2013    source источник


Ответы (1)


Отношение Сортировка и Sorted запускается только в ответ на действия пользователя, поэтому ожидается, что они не запускаются при сортировке сетки в коде.

Если вам нужно увидеть, какие поля отсортированы по сетке, проверьте соответствующий FieldLayout.SortedFields, чтобы увидеть, какие поля отсортированы.

Обратите внимание: если ваш тест предназначен для проверки того, что сортировка прошла успешно, может быть лучше проверить порядок записей в сетке, а не проверять наличие событий.

person alhalama    schedule 14.02.2013