在我的XAML中,我有一个ItemsControl的DataTemplate,我必须将组合框控件绑定到同一个Dictionary对象。
但我希望这些组合框能够显示不同的项目,这种差异必须由字典键提供。
例如,如果我写:
<Combobox ItemsSource="{Binding Path=MyDictionary[Key]}"/>
然后组合框将显示指定键给出的所有值。但是这个'[key]'部分必须为我的ItemsControl中的每个项目进行更改。
是否有解决方案,包括字符串连接,无论如何,谁能帮助我实现这一目标?我无法找到动态构建绑定的Path值的任何内容。
提前致谢。
答案 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];
}
}