C# 使用XamDataGrid和排序事件进行单元测试
我试图对一个类进行单元测试,该类使用XamDataGrid 我的问题是,我的代码应该从XamDataGrid触发排序或排序事件,但它没有:我缺少什么 以下是如何创建网格:C# 使用XamDataGrid和排序事件进行单元测试,c#,wpf,unit-testing,infragistics,xamdatagrid,C#,Wpf,Unit Testing,Infragistics,Xamdatagrid,我试图对一个类进行单元测试,该类使用XamDataGrid 我的问题是,我的代码应该从XamDataGrid触发排序或排序事件,但它没有:我缺少什么 以下是如何创建网格: public static class XamDataGridObjectMother { public static XamDataGrid CreateGrid(params string[] columns) { var grid = new 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; }
}
}
当然_dataGrid是在上面显示的对象母类的其他地方初始化的
因此,如果我的问题还不明显,那么我添加一个排序字段应该会触发一个排序/排序事件(它应该对网格进行排序),但它不会,而且我找不到任何方法(通过编程)强制它对网格进行排序并触发那些事件
我遗漏了什么?和事件仅在响应用户交互时触发,因此在代码中对网格进行排序时,它们不会触发
如果需要查看通过网格排序的字段,可以检查相关集合以查看排序的字段
请注意,如果您的测试是为了验证排序是否成功,那么最好检查网格中记录的顺序,而不是检查要触发的事件。和事件仅在响应用户交互时触发,因此在代码中对网格进行排序时,它们不会触发
如果需要查看通过网格排序的字段,可以检查相关集合以查看排序的字段
请注意,如果您的测试是为了验证排序是否成功,那么最好检查网格中记录的顺序,而不是检查要触发的事件
var sortDescription = new FieldSortDescription("Portfolio", ListSortDirection.Descending, false);
_dataGrid.FieldLayouts[0].SortedFields.Add(sortDescription); // That should trigger the event(s)!