【问题标题】:Unit testing with XamDataGrid and Sorting event使用 XamDataGrid 和排序事件进行单元测试
【发布时间】:2013-02-05 17:09:57
【问题描述】:

我正在尝试对一个类进行单元测试,而该类使用 XamDataGrid。

我的问题是我的代码应该从 XamDataGrid 触发 Sorted 或 Sorting 事件,但它没有:我错过了什么?

这里我是如何创建网格的:

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; }
    }
}

这是我的单元测试的一部分,我以编程方式向网格添加排序,并且它应该引发排序/排序事件(可能两者):

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

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

当然 _dataGrid 是在其他地方初始化的,上面显示了我的对象母类。

所以我的问题如果还不是很明显,是我添加一个排序字段应该触发一个排序/排序事件(它应该对网格进行排序),但它没有,我可以'找不到任何方法(以编程方式)强制它对网格进行排序并触发这些事件。

我错过了什么?

【问题讨论】:

    标签: c# wpf unit-testing infragistics xamdatagrid


    【解决方案1】:

    Sorting 和 Sorted 事件仅在响应用户交互时触发,因此在代码中对网格进行排序时它们不会触发。

    如果您需要查看哪些字段通过网格排序,您可以查看相关的FieldLayout.SortedFields 集合以查看哪些字段已排序。

    请注意,如果您的测试是为了验证排序是否成功,最好检查网格中记录的顺序,而不是检查要触发的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多