2012-07-18 60 views
2

我使用Entity Framework作为我的数据库源,并且需要将Linq查询“var”类型转换为ObservableCollection。然后我需要将ObservableCollection绑定到WPF窗体上的ComboBox;绑定到ItemsSource,DisplayMemeberPath,SelectedValuePath和SelectedValue。将ObservableCollection绑定到WPF中的组合框中

这里是编码:

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是表示本为“{代码= ????,描述= ????}”,而不是结合的代码值和说明显示。我需要做些什么才能让ComboBox绑定到单个元素上?

+0

您应该将您的问题的最佳答案标记为您接受的答案。 – 2012-07-23 19:00:46

回答

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
<ComboBox ItemsSource="{Binding Path=maritalcodes}" 
     SelectedValuePath="Code" 
     DisplayMemberPath="Description" 
     SelectedValue="{Binding Path=Code}"/> 

我希望这将有助于。