我有一个类似下面的类,我希望在表中显示许多类:
public class Score
{
public int Position { get; set; }
public float Points { get; set; }
public DateTime DateTime { get; set; }
}
public class Player
{
public string Name { get; set; }
public int Rank { get; set; }
public List< Score > Scores { get; set; }
public Player()
{
Scores = new List< Score >();
}
public float GetScoreForDate( DateTime time )
{
foreach( Score score in Scores )
{
if( score.DateTime == time )
{
return score.Points;
}
}
return 0.0f;
}
}
表格中的每一行都是Player的一个实例,每一列(在每个分数的名称和等级之后)。
我想以某种方式绑定到GetScoreForDate()并将列的关联日期时间值传递给正在迭代的Player的当前实例,因为表通过它的itemssource来填充控件。
我以为我可以使用ObjectDataProvider,但据我所知,我可以调用静态函数,或者在同一个Player实例上调用一个方法(所以每个值都显示在表是一样的。)
修改
这是一个示例实现,它显示了如何将表的每个单元格绑定到单个实例(当它应该是与该行关联的任何实例时)
ObjectDataProvider objectDataProvider = new ObjectDataProvider()
{
ObjectInstance = player,
MethodName = "GetScoreForDate"
};
objectDataProvider.MethodParameters.Add( score.DateTime );
Binding binding = new Binding()
{
Source = objectDataProvider
};
TableViewColumn column = new TableViewColumn()
{
Title = score.DateTime.ToShortDateString(),
ContextBinding = binding
};