所以这就是:
Bowls = new ObservableCollection<Bowl>();
SowCommand = new DelegateCommand(param => SowGame(param));
private void SowGame(Object param)
{
Int32 index = Convert.ToInt32(param);
Bowls[index] = ...
}
所以我按下按钮Command =“{Binding SowCommand}”将“param”传递给SowGame
param现在是碗型的对象
在SowGame中我想用这个碗对象做一些事情,我知道可以通过使用Bowls [对象索引]来访问集合中的某个对象。但是如上所述将对象转换为int似乎不起作用。
如何获取传递对象的索引?
答案 0 :(得分:1)
使用ObservableCollection的IndexOf方法:
int index = Bowls.IndexOf((Bowl)param);
答案 1 :(得分:0)
我明白了!这是导致问题的原因:
SowCommand = new DelegateCommand(param => SowGame(param));
为了能够获得按下按钮的索引(与上述命令绑定),您需要做两件事:
首先,您需要实现一个以某种方式计算集合中元素索引的函数。例如,在我的情况下:
public Int32 Number { get {
if (Y == 0)
{
return _Size - 1 - X;
}
else
{
return _Size + X;
}
} }
当然获取索引的方法取决于问题。上面的代码是我的碗类型实现的一部分。
在此之后你必须添加
Command Parameter="{Binding Number}"
到您的 .xaml ,问题中的代码应该可以正常运行。