C# Windows应用商店应用程序中的属性路径和绑定

C# Windows应用商店应用程序中的属性路径和绑定,c#,xaml,windows-8,C#,Xaml,Windows 8,我试图了解windows应用商店示例中的一个示例游戏是如何工作的。特别是这个 我理解(我想)发生的大部分事情,但我真的不知道这里发生了什么: boardSpace.SetBinding(BoardSpace.SpaceStateProperty, new Binding { Path = new PropertyPath(String.Format("[{0},{1}]", row, column)) }); 我不明白PropertyPath到底绑定到了什么。它似乎正在形成某种2D数组,因此

我试图了解windows应用商店示例中的一个示例游戏是如何工作的。特别是这个

我理解(我想)发生的大部分事情,但我真的不知道这里发生了什么:

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, 新绑定{Path=newPropertyPath(“MoveCommand”)})

这些将BoardSpacebutton CommandProperty绑定到GameViewModel中公开的MoveCommand委托

现在我发现一个函数是这样公开的

public BoardSpaceState this[String index]
属性路径是否会绑定到this函数,因为它接受一个字符串,而PropertyPath只是一个字符串[x,y]?它怎么知道

我觉得我错过了PropertyPath工作方式的一个微妙部分,但阅读该文件并没有多大意义


非常感谢您的帮助

是的,此绑定是对“this”属性的绑定,也称为索引器,它提供了一种直接索引到定义类的方法,就像它是一个集合一样。因此,只要指定了索引,但没有指定属性名称,就可以使用索引器作为默认属性

文档中的相关主题是,其中包括以下代码段(此处缩写):

类样本集合
{
//定义索引器,它将允许客户端代码
//在类实例本身上使用[]表示法。
公共T此[int i]{/*…*/}
}
//用法:
SampleCollection stringCollection=新建SampleCollection();
stringCollection[0]=“你好,世界”;
这不是绑定示例,但在绑定中的概念是相同的。“[index]”的属性路径是与当前数据上下文(示例中的GameViewModel对象)的索引器属性的特定索引值的绑定

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