2014-10-14 4 views
0

В моем XAML у меня есть DataTemplate для ItemsControl, где мне нужно связать элемент управления combobox с тем же объектом Dictionary.Динамический путь привязки Combobox to Dictionary

Но я хочу, чтобы эти comboboxes отображали разные элементы, и эта разница должна предоставляться ключом словаря.

Например, если я пишу:

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

Затем ComboBox будет отображать все значения, данные указанного ключа. Но эта часть [[ключ]] должна измениться для каждого элемента, присутствующего в моем ItemsControl.

Есть ли решение, включая конкатенацию строк, что угодно, кто мог бы помочь мне в этом? Я не могу найти ничего, чтобы динамически строить значение Path для моего привязки.

Заранее спасибо.

ответ

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