绑定到多个索引器

Igo*_*kin 3 wpf binding indexed-properties windows-phone

我试图用两个索引器绑定索引属性.该物业看起来像这样

public Item this[int x, int y]
{
  get { return _items[x, y]; }
  set { _items[x, y] = value; }
}
Run Code Online (Sandbox Code Playgroud)

根据http://msdn.microsoft.com/en-us/library/ms742451.aspx,可以绑定索引属性,如

<object Path="propertyName[index,index2...]" .../>
Run Code Online (Sandbox Code Playgroud)

甚至有一个例子:

<Rectangle Fill="{Binding ColorGrid[20,30].SolidColorBrushResult}" .../>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在XAML中访问该属性时:

<Image Source="{Binding Items[0,0].Image}" />
Run Code Online (Sandbox Code Playgroud)

我在设计师中遇到错误:

未命名的参数"0] .Image"必须出现在命名参数之前.

它似乎解释为0].图像作为下一个参数.我错过了什么?

NSG*_*aga 5

问题是{Binding}标记扩展-其中有一个delimiter,.

要解决此问题,您可以使用以下表示法...

<TextBox Width="100" Height="100">
    <TextBox.Text>
        <Binding Path="MyIndexer[1,1]" />
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

或使用"逃跑" ,\-这也是该链接(但不知何故,他们得到了事实,原来的符号不工作).

<TextBox Text="{Binding MyIndexer[2\,2]}" Width="100" Height="100" />  
Run Code Online (Sandbox Code Playgroud)

请注意,索引器,多维数组语法是这样的:)...

public string this[int x, int y]
{
    get { return _items[x][y]; }
    set { _items[x][y] = value; }
}
Run Code Online (Sandbox Code Playgroud)