2016-04-19 2 views
0

Я пытаюсь привязать голову к привязке в формах WPF и потерялся в этом. Я пытаюсь сделать привязку в коде VB .net. У меня есть интерфейс:VB .Net WPF Binding 2 управляет словарем

Implements INotifyPropertyChanged 

и если у меня есть словарь:

Public Property myDict As New Dictionary(Of String, String) 

который я заполняю с ключ-значение кучу данных, то я хотел бы, чтобы заполнить выпадающий на WPF окно с ключом. До сих пор, используя следующие:

myCombo.ItemsSource = myDict 
myCombo.DisplayMemberPath = "Key" 

Тогда я пытаюсь связать выпадающий к TextBlock, так что выпадающий показывает ключ и TextBlock показывает значение. Есть много этих комбинаций combobox-textbox, поэтому не может действительно жестко кодировать это или иметь его в xaml. Последнее, что я попробовал, который делает что-то следующее:

Dim aBinding As New Binding("Value") 
aBinding.Source = myDict 
myTextBlock.SetBinding(TextBlock.TextProperty, aBinding) 

Это тогда показывает TextBlock иметь первое значение в словаре, но не изменяет с ComboBox. Я попытался связать combobox таким же образом и с новой переменной привязки, которая имеет эффект гашения combobox, но не может показаться, что это работает.

Извините, если это действительно очень простая проблема, но я очень новичок в использовании привязки в WPF, главным образом потому, что избегал этого.

+0

Почему возражение делать это в XAML? –

+0

Потому что у меня их довольно много, и вам нужно создавать элементы управления во время выполнения с привязкой. – area9

+0

Прошу прощения, я должен был быть более конкретным: в XAML с элементом ItemsControl и одним или несколькими шаблонами. –

ответ

1

Вы можете создать TextBlock связывания, как это:

Dim aBinding As New Binding("SelectedItem.Value") 
aBinding.Source = myCombo 
myTextBlock.SetBinding(TextBlock.TextProperty, aBinding) 
+0

Отличный материал !! Спасибо - хорошо, да, я ссылался на объект в пути. Теперь я понимаю, что вы имели в виду. Хотя это всего лишь 3 строки кода, это замечательно! – area9