绑定到一个方法,其参数取自itemssource中的当前项

时间:2016-01-11 00:18:45

标签: c# wpf itemssource

我有一个类似下面的类,我希望在表中显示许多类:

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

0 个答案:

没有答案