3

インデックス付きプロパティを 2 つのインデクサーにバインドしようとしています。物件はこんな感じ

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].Image" は、名前付き引数の前に指定する必要があります。

0].Image を次の引数として解釈するようです。私は何が欠けていますか?

4

2 に答える 2

5

問題は、{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; }
}
于 2013-04-07T19:43:36.963 に答える