.net wpf绑定到索引器

.net wpf绑定到索引器,.net,wpf,xaml,data-binding,indexer,.net,Wpf,Xaml,Data Binding,Indexer,很好。但是有没有一种方法可以将变量作为索引键传递 <TextBlock Text="{Binding Path=[myKey]} /> 这需要一个IValueConverterIMultiValueConverter不,恐怕不行。在这一点上,您应该考虑创建一个视图模型,它可以使数据更容易绑定到它。 < P>处理此问题的最快方法通常是使用一个多绑定与一个IMultValueCurrViever,它接受集合及其索引的绑定: <TextBlock Text="{Binding Pa

很好。但是有没有一种方法可以将变量作为索引键传递

<TextBlock Text="{Binding Path=[myKey]} />

这需要一个
IValueConverter
IMultiValueConverter
不,恐怕不行。在这一点上,您应该考虑创建一个视图模型,它可以使数据更容易绑定到它。

< P>处理此问题的最快方法通常是使用一个多绑定与一个IMultValueCurrViever,它接受集合及其索引的绑定:

<TextBlock Text="{Binding Path=[{Binding Column.Index}]} />

然后转换器可以基于以下两个值执行查找:

<TextBlock.Text>
    <MultiBinding Converter="{StaticResource ListIndexToValueConverter}">
        <Binding /> <!-- assuming the collection is the DataContext -->
        <Binding Path="Column.Index"/>
    </MultiBinding>
</TextBlock.Text>
公共对象转换(对象[]值,类型targetType,对象参数,CultureInfo区域性) { 如果(值。长度<2) 不做任何事; IList list=值[0]为IList; if(list==null | |值[1]==null | |!(值[1]为int)) 不做任何事; 返回列表[(int)值[1]]; }
查看此链接中的我的答案MSDN链接,以便将来搜索:
<TextBlock.Text>
    <MultiBinding Converter="{StaticResource ListIndexToValueConverter}">
        <Binding /> <!-- assuming the collection is the DataContext -->
        <Binding Path="Column.Index"/>
    </MultiBinding>
</TextBlock.Text>
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    if (values.Length < 2)
        return Binding.DoNothing;

    IList list = values[0] as IList;
    if (list == null || values[1] == null || !(values[1] is int))
        return Binding.DoNothing;

    return list[(int)values[1]];
}