2013-04-07 57 views
3

我想綁定與兩個索引器的索引屬性。該物業是這樣綁定到多個索引器

public Item this[int x, int y] 
{ 
    get { return _items[x, y]; } 
    set { _items[x, y] = value; } 
} 

http://msdn.microsoft.com/en-us/library/ms742451.aspx,可以綁定反對這樣的

<object Path="propertyName[index,index2...]" .../> 

索引屬性甚至還有一個例子:

<Rectangle Fill="{Binding ColorGrid[20,30].SolidColorBrushResult}" .../> 

然而,當我嘗試訪問XAML中的那個屬性,如下所示:

<Image Source="{Binding Items[0,0].Image}" /> 

我的設計得到一個錯誤:

未命名的參數「0]圖像配」必須命名參數之前出現。

它似乎解釋0] .Image作爲下一個參數。我錯過了什麼?

回答

4

問題是{Binding}標記擴展 - 它有一個delimiter這是,

要解決,你可以用下面的符號......

<TextBox Width="100" Height="100"> 
    <TextBox.Text> 
     <Binding Path="MyIndexer[1,1]" /> 
    </TextBox.Text> 
</TextBox> 

或使用「逃跑」 ,\ - 這也是該鏈接(但不知何故,他們得到了事實他們的原始符號不起作用)。

<TextBox Text="{Binding MyIndexer[2\,2]}" Width="100" Height="100" /> 

注意索引,多維數組的語法是這樣的:)...

public string this[int x, int y] 
{ 
    get { return _items[x][y]; } 
    set { _items[x][y] = value; } 
} 
+0

謝謝!它在標籤內工作。至於轉義,我已經嘗試過了,但然後參數似乎被解釋爲單個字符串參數,並且綁定不會與錯誤消息「參數計數不匹配」一起使用。 – 2013-04-07 20:23:26

+0

不用客氣 - 是的,他們似乎已經爲這個「路徑」做了他們的榜樣,就像我之前做的那樣 - 不工作而沒有逃脫它。 – NSGaga 2013-04-07 20:38:02

+0

輝煌的一直在尋找這:) – NDJ 2013-10-15 10:35:12

0

的Windows Phone是不是一個WPF,它主要是Silverlight和Silverlight不支持Indexer

  • 只有一維數組索引支持。

您可以嘗試解決這個問題:

一)試圖實現像Items[0][0]東西,所以Items[0]會給你一個數組,你可以再次申請索引。

b)試着用IValueConverter來實現這個邏輯。

+0

其實我得到了WPF相同的行爲。 – 2013-04-07 18:05:29