0
基本问题:如何将文本框绑定到组合框的选定项目,该组合框的itemsource是WCF RIA服务域上下文中的LINQ查询的结果。WCF RIA服务SL4绑定问题
附加要求:当所选项目被更改时,绑定应该更新。 附加要求:绑定应该是两种方式。
我迄今为止的解决方案:用户点击创建一个新的项目
后,会创建新的项目,并添加到设置的对象,但(对于每种语言之一)尚未持久。之后,此代码运行。组合框应该允许用户选择其中一个创建的项目,它以相应的语言显示。绑定的文本框应该允许用户编辑项目。
后面的代码:
//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}" />
与我的解决方案的问题:
它不工作,因为当我改变选择在组合框中的文本框不要更新。我可以实现选择已更改的事件处理程序并手动更新文本框,但这会破坏绑定文本框的目的。这里最好的做法是什么?
尝试结合DataContexts不是一次设置它们。就像DataContext =“{Binding SelectedItem,ElementName = LanguageComboBox}”。 – 2010-08-05 22:41:36
我非常放心,你的建议奏效!现在作出答案,以便我可以检查它:P感谢GAZILLION BAZILLION MILLION!在一段代码刚开始按照您期望的方式工作几个小时/天之后,您就没有什么可以感受到的解脱。 – cmaduro 2010-08-06 00:53:44