2012-01-09 3 views
1

У меня есть WPF ComboBox со статическим списком людей с изображением и именем. Я пытаюсь привязать выбранное FirstName к таблице db. То, как я это делаю сейчас (очевидно, неправильно) Я только связывание объекта и, следовательно, писать:Binding Text Свойство дочернего элемента ComboBoxItem

System.Windows.Controls.ComboBoxItem

к моей БД таблицы.

Как я могу связать FirstName с выбранным ComboBoxItem из свойства TextBlock.Text? Есть ли способ сделать это исключительно в WPF?

 <ComboBox Text="{Binding Path=FirstName}"> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal" > 
       <Image Source="/Images/Alice.png" /> 
       <TextBlock Text="Alice" /> 
      </StackPanel> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="/Images/Bob.png" /> 
       <TextBlock Text="Bob" /> 
      </StackPanel> 
     </ComboBoxItem> 
    </ComboBox> 

Я спасаю изменения в таблицу БД на события нажатия кнопки

private void SaveAndClose_Click(object sender, RoutedEventArgs e) 
    { 
     bindingView = (BindingListCollectionView)myCollection.View; 
     bindingView.CommitEdit(); 
     db.SubmitChanges(); 
    } 
+0

Не могли бы вы показать код, который используется для обработки выбранного элемента? Вам придется иметь код для записи в базу данных, поскольку WPF предназначен только для уровня представления. – msarchet

+0

Я не использую событие с измененным элементом. Должна ли я быть? – user1081822

ответ

1

Вместо жесткого кодирования comboboxitems, вы должны использовать DataTemplate. Затем вы должны использовать SelectedValuePath, чтобы выбрать значение, основанное на свойстве FirstName в ваших элементах. Затем вы можете привязываться к текстовому полю.

Если вы хотите напрямую связать текстовое поле в xaml, вам нужно будет указать элемент (x: Name = "myTextBox"). Затем привяжите выделенное значение выпадающего списка так: SelectedValue = "{Binding ElementName =" myTextBox ", Path =" Text "}".

В общем, я не думаю, что привязка combobox к текстовому поле - очень хорошая идея.

Смежные вопросы