将ObservableCollection绑定到WPF中的ComboBox

时间:2012-07-18 22:15:29

标签: c# wpf linq entity-framework data-binding

我使用Entity Framework作为我的数据库来源,需要转换Linq查询" var"键入ObservableCollection。然后我需要将ObservableCollection绑定到WPF表单上的ComboBox;绑定到ItemsSource,DisplayMemeberPath,SelectedValuePath和SelectedValue。

这是代码:

using (PulseContext pc = new PulseContext())
{
    var maritalcodes =  from m in pc.CodeMaster
                        where m.Type == "16"
                        select new { m.Code, m.Description };

    prop.ClientData.Options = new ObservableCollection<object>(maritalcodes);
}

问题是ComboBox显示为&#34; {Code = ????,Description = ???? }&#34;而不是绑定到代码的值和描述显示。如何让ComboBox绑定到各个元素?

2 个答案:

答案 0 :(得分:3)

您需要像这样设置SelectedValuePathDisplayMemberPath

prop.ClientData.Options = new ObservableCollection<object>(maritalcodes);
prop.ClientData.Options.SelectedValuePath = "Code";
prop.ClientData.Options.DisplayMemberPath = "Description";

或者你可以像这样在xaml中设置它们:

<ComboBox ItemsSource="{Binding Path=maritalcodes}"
          SelectedValuePath="Code"
          DisplayMemberPath="Description" />

答案 1 :(得分:1)

<ComboBox ItemsSource="{Binding Path=maritalcodes}"
      SelectedValuePath="Code"
      DisplayMemberPath="Description" 
      SelectedValue="{Binding Path=Code}"/>

我希望这会有所帮助。