0

だからここにあります:

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 は Bowl タイプのオブジェクトになりました

SowGame で、この Bowl オブジェクトを使って何かをしたいのですが、Bowls[オブジェクトのインデックス] を使用してコレクションから特定のオブジェクトに到達できることを知っています。しかし、上記のようにオブジェクトを int に変換してもうまくいかないようです。

渡されたオブジェクトのインデックスを取得するにはどうすればよいですか?

4

2 に答える 2

1

ObservableCollection の IndexOf メソッドを使用します。

int index = Bowls.IndexOf((Bowl)param);
于 2012-12-03T18:30:49.610 に答える
0

私はそれを考え出した!問題の原因は次のとおりです。

SowCommand = new DelegateCommand(param => SowGame(param));

押されたボタン (上記のコマンドにバインドされている) のインデックスを取得できるようにするには、次の 2 つが必要です。

まず、コレクション内の要素のインデックスを計算する関数を実装する必要があります。たとえば、私の場合:

public Int32 Number { get {

            if (Y == 0)
            {
                return _Size - 1 - X;
            }
            else
            {
                return _Size + X;
            }

        } }

もちろん、インデックスを取得する方法は問題によって異なります。上記のコードは、私の Bowl タイプの実装の一部です。

この後、追加する必要があります

Command Parameter="{Binding Number}"

.xamlに追加すると、問題のコードが正しく機能するはずです。

于 2012-12-04T17:50:21.740 に答える