1

Windows ストア サンプルのサンプル ゲームの 1 つがどのように機能するかを理解しようとしています。具体的にはこれ

http://code.msdn.microsoft.com/windowsapps/Reversi-XAMLC-sample-board-816140fa

私は何が起こっているのかほとんど理解していますが(私は思います)、ここで何が起こっているのか本当にわかりません:

boardSpace.SetBinding(BoardSpace.SpaceStateProperty,
new Binding { Path = new PropertyPath(String.Format("[{0},{1}]", row, column)) });

PropertyPath が正確に何にバインドされているのかわかりません。いくつかの 2D 配列を形成しているように見えるので、ゲーム モデル ビューから SpaceStateProperty をこの PropertyPath にバインドしていますが、[0,1] または [2, 2] は特定のインスタンスまたはパスにどのように変換されるのでしょうか?

次の行はより理にかなっています: boardSpace.SetBinding(BoardSpace.CommandProperty, new Binding { Path = new PropertyPath("MoveCommand") });

これらは、GameViewModel で公開されている MoveCommand Delegate に BoardSpacebutton CommandProperty をバインドしています。

今、私はこのように公開されている1つの関数を見つけました

public BoardSpaceState this[String index]

この関数は文字列を取り、PropertyPath は単なる文字列 [x,y] だったので、プロパティ パスはこの関数にバインドされますか? それはどのように知っていますか?

PropertyPath の仕組みについて微妙な部分が欠けているように感じますが、ドキュメントを読んでもあまり意味がありませんでした。

どんな助けにも感謝します

4

1 に答える 1

0

はい、このバインディングは "this" プロパティ (インデクサーとも呼ばれます) に対するものであり、コレクションであるかのように定義クラスに直接インデックスを付ける方法を提供します。したがって、インデクサーは、インデックスが指定されているが特定のプロパティ名がない場合に常に使用される一種のデフォルト プロパティです。

ドキュメント内の関連トピックは、インデクサー (C# プログラミング ガイド)で、次のコード スニペット (ここでは省略) が含まれています。

class SampleCollection<T>
{
    // Define the indexer, which will allow client code 
    // to use [] notation on the class instance itself. 
    public T this[int i] { /* ... */ }
}

// Usage:
SampleCollection<string> stringCollection = new SampleCollection<string>();
stringCollection[0] = "Hello, World";

This isn't a binding example, but the concept is the same in a binding. A property path of "[index]" is a binding to a specific indexed value of the indexer property of the current data context (a GameViewModel object in the example).

于 2013-03-07T18:12:03.490 に答える