Основная проблема: как привязать текстовое поле к выбранному элементу комбинированного списка, источником которого является результат запроса LINQ в контексте домена служб RIA WCF.
Дополнительное требование: при изменении выбранного элемента привязка должна обновляться.Дополнительное требование: привязка должна быть двухсторонней.
Мое решение до сих пор:
После того, как пользователь щелкнет для создания нового элемента, новые элементы создаются и добавляются в набор объектов, но не сохраняютсяпока (по одному на каждый язык).После этого этот код запускается.Предполагается, что комбинированный список позволяет пользователю выбрать один из созданных элементов, который отображается как соответствующий язык.Связанные текстовые поля должны позволять пользователю редактировать элемент.
Код:
//Setup the combobox
LanguageComboBox.ItemsSource = dc.GeneralStatistics.Where(g => g.RelatedResourceId.Equals(guid));
LanguageComboBox.DisplayMemberPath = "Language.LanguageName";
LanguageComboBox.SelectedItem = dc.GeneralStatistics.First(g => g.Language.LanguageName.Equals("English"));
//Setup the textboxes
this.StatisticsText.DataContext = (LanguageComboBox.SelectedItem as GeneralStatistics).Text;
this.ShortDescriptionText.DataContext = (LanguageComboBox.SelectedItem as GeneralStatistics).ShortDescription;
КОД XAML:
<ComboBox x:Name="LanguageComboBox" />
<TextBox x:Name="ShortDescriptionText" Text="{Binding}" />
<TextBox x:Name="StatisticsText" Text="{Binding}" />
Проблема с моим решением:
Это не работает, потому что когда я изменяю выделение в выпадающем списке, текстовые поля не обновляются.Я мог бы реализовать обработчик событий с измененным выбором и вручную обновить текстовые поля, но это не позволило бы связать текстовые поля.Какова лучшая практика здесь?