2012-12-08 49 views
1

我試圖瞭解Windows應用商店示例中的示例遊戲之一是如何工作的。具體來說這一個Windows應用商店應用中的PropertyPaths和綁定

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

這些綁定BoardSpacebutton CommandProperty到MoveCommand代表這是在GameViewModel

暴露現在我發現一個函數多數民衆贊成暴露這樣

public BoardSpaceState this[String index] 

請問屬性路徑被綁定到這個功能因爲它需要一個字符串,而PropertyPath只是一個字符串[x,y]?它如何知道?

我覺得我錯過了PropertyPath工作方式的一個細微部分,但閱讀文檔並沒有多大意義。

我感謝所有幫助

回答

0

是的,這是結合了「此」屬性,也被稱爲索引,它提供了一種索引直接進入定義類,彷彿它是一個集合。因此,索引器是指定索引時使用的一種默認屬性,但沒有特定的屬性名稱。

文檔中的相關主題是Indexers (C# Programming Guide),它包括下面的代碼段(這裏縮寫):

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

這不是有約束力的例子,但概念是在結合相同的。屬性路徑「[索引]」是對當前數據上下文的索引器屬性(示例中的GameViewModel對象)的特定索引值的綁定。