クラスを単体テストしようとしていますが、そのクラスは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 は、上記のオブジェクト マザー クラスを使用して別の場所で初期化されます。
したがって、まだ明らかでない場合の私の問題は、並べ替えられたフィールドを追加すると、並べ替え/並べ替えイベントをトリガーする必要がある (グリッドを並べ替える必要がある) ことですが、そうではなく、(プログラムで) 強制する方法が見つかりません。グリッドをソートし、それらのイベントを発生させます。
私は何が欠けていますか?