2012-07-18 59 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}"/> 

我希望這將有助於。