wpf绑定到索引器

时间:2010-12-22 17:03:15

标签: .net wpf xaml data-binding indexer

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

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

工作正常。但有没有办法将变量作为索引键传递?

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

3 个答案:

答案 0 :(得分:13)

处理此问题的最快方法通常是使用MultiBinding和IMultiValueConverter接受集合及其绑定的索引:

<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]];
}

答案 1 :(得分:0)

这需要 IValueConverter IMultiValueConverter

答案 2 :(得分:0)

不,我不敢。此时,您应该考虑创建一个视图模型来对数据进行整形,以便更容易绑定到它。