2011-05-04 79 views
1

我的WPF4組合框下拉列表不正確地顯示我的EF4實體的類名。下面是相關XAML:如何綁定查找組合框?

<Window.Resources> 
    <CollectionViewSource x:Key="myEntitiesViewSource"/> 
</Window.Resources> 

<ComboBox ItemsSource="{Binding Source={StaticResource myEntitiesViewSource}}" DisplayMemberPath="CategoryDescription" SelectedValuePath="CategoryID" /> 

這裏是我的Window_Loaded事件中的代碼:

var categoryList = from p in _context.Categories 
        orderby p.CategoryNumber 
        select p; 

System.Windows.Data.CollectionViewSource myEntitiesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("myEntitiesViewSource"))); 
// Load data by setting the CollectionViewSource.Source property: 
myEntitiesViewSource.Source = categoryList; 

我的數據庫有許多與連接表稱爲ProjectCategories項目和類別之間的一對多關係。類別實體被自動地作爲一個單一的實體創建來表示兩個數據庫表:僅包含兩個字段

1)含有一個ID,CategoryDe​​scription和CategoryNumber和

2分類的查找表)的連接表ProjectCategories - 來自表項目和類別的ID。實體模型位於我的WPF窗口的單獨項目中。

我的目標是讓用戶從下拉列表中選擇一個CategoryDe​​scription,然後單擊Add Category按鈕將選定的Category添加到ProjectCategories的單獨列表中。使用當前代碼,我可以在組合框文本區域中看到正確的CategoryDe​​scription,但下拉列表多次顯示實體類名稱Categories(在其名稱空間前面)!

如何使這個簡單的查找組合框正確綁定並顯示CategoryDe​​scriptions和CategoryID的SelectedValue列表?注意:如果可能,我會接受僅使用代碼的方法,而不使用XAML中的CollectionViewSource。

謝謝!

回答

1

沒關係。我問了這個問題,並自己回答了。我的代碼或XAML沒有錯。 該問題是由於使用第三方主題來設置我的控件。一旦我刪除主題組合框綁定問題就消失了。欲瞭解更多詳情,請致電see this post

0

這樣的事情呢?

<ComboBox ItemsSource="{Binding Categories}" 
      SelectedItem="{Binding Category}" DisplayMemberPath="Description" /> 

而不是使用選定的值,我會存儲整個對象。我選擇的價值方法是舊式的ASP風格。

SelectedItem="{Binding Category}"是您的類別對象。基本上它已經存儲了ComboBox的選定項目。

例如,當用戶點擊一個按鈕時,您可以從ViewModel激發一個命令,並且您將擁有相應的選定的Category對象。