2012-11-07 26 views
2

嗨,我的ViewModel上有一個CollectionViewSource屬性。將ComboBox綁定到CollectionViewSource的正確方法

該視圖模型被綁定到一個組合框是這樣的:

<ComboBox ItemsSource="{Binding Products.View}" 
SelectedItem="{Binding SelectedEntity.Product}" 
IsSynchronizedWithCurrentItem="True"/> 

當綁定到現有SelectedEntity它工作正常。

當我嘗試綁定到一個SelectedEntity,該dosn't擁有一個產品,我想要顯示列表中的第一個項目。因此我試圖使用Products.View.MoveCurrentToFirst(),但仍然沒有顯示第一項。

當然,它的工作原理,當我設置SelectedEntity.Product = Products.View.CurrentItem.

我能做些什麼,來提高我的代碼?這看起來有點不對我...

+0

需要一些更多信息: 「不擁有產品」 - 是否意味着產品爲空或產品屬性不存在?或者呢? 你在哪裏調用MoveCurrentToFirst? 你在哪裏調用CurrentItem的任務? – humanitas

+0

該產品爲空。我在我的ViewModel的構造函數中調用賦值 – TheJoeIaut

+0

CollectionViewSource可以在xaml中定義並綁定到ViewModel上的集合,然後您可以將ItemsControl(您的ComboBox)的ItemsSource綁定到CollectionViewSource。 CollectionViewSource是視圖的一部分。 – user1834059

回答

0

WPI中的SelectedItem選擇整個實例,所以如果你將SelectedItem綁定到實體的導航屬性,那麼一切都很好。然而,如果你將SelectedItem綁定到實體的非導航屬性,那麼這可能是一個問題,我建議如果這是一個業務需求,而不是綁定SelectedValue。

對我來說,我發現最好將SelectedItem綁定到我的實體的導航屬性,將SelectedValue綁定到我的實體的value屬性。

我希望這會有所幫助。

相關問題