【问题标题】:wpf bind to indexerwpf 绑定到索引器
【发布时间】:2021-12-21 13:48:54
【问题描述】:
<TextBlock Text="{Binding Path=[0]} />

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

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

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

【问题讨论】:

标签: .net wpf xaml data-binding indexer


【解决方案1】:

处理此问题的最快方法通常是使用带有 IMultiValueConverter 的 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]];
}

【讨论】:

    【解决方案2】:

    不,恐怕不会。此时,您可能应该考虑创建一个视图模型来塑造您的数据,使其更容易绑定到它。

    【讨论】:

      【解决方案3】:

      这需要 IValueConverter IMultiValueConverter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-17
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 2013-05-29
        • 2016-01-02
        相关资源
        最近更新 更多