动态绑定路径组合框到字典

时间:2014-10-14 02:26:37

标签: c# wpf dictionary combobox

在我的XAML中,我有一个ItemsControl的DataTemplate,我必须将组合框控件绑定到同一个Dictionary对象。

但我希望这些组合框能够显示不同的项目,这种差异必须由字典键提供。

例如,如果我写:

<Combobox ItemsSource="{Binding Path=MyDictionary[Key]}"/>

然后组合框将显示指定键给出的所有值。但是这个'[key]'部分必须为我的ItemsControl中的每个项目进行更改。

是否有解决方案,包括字符串连接,无论如何,谁能帮助我实现这一目标?我无法找到动态构建绑定的Path值的任何内容。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以将MultiBinding与MultiConverter结合使用来实现这一目标。

你的xaml

<MultiBinding Converter="{StaticResource MyConverter}">
    <Binding Path="MyDictionary" />
    <Binding Path="Key" />
</MultiBinding>

转换器可能看起来像这样

public class DictionaryConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var key = values[1] as YourKeyType;
        var dictionary = values[0] as Dictionary<YourKeyType, YourValueType>;

        return dictionary[key];
    }
}