2009-07-16 96 views
2

我有一個組合框,它是一個ObservableCollection項目的數據綁定。我想有一個默認選擇的項目是(無),它會將我綁定到「SelectedValue」的屬性的值設置爲null。將項添加到WPF中的Databound ItemsControl

我認爲應該有一種方法來實現這一點與Style/DataTemplate/TemplateSelector的組合。我試圖用MVVM來設計它,所以我想要一些不使用代碼隱藏的東西,並儘可能地重用。我還希望ObservableCollection的好處(更新導致控件重新綁定的集合)保持不變。

Bonus B部分: 我想也可以在ItemsControl的底部附加一個額外的視覺元素。我想如果我知道如何在集合的最後一個項目上觸發它,那麼更改DataTemplate會很容易。願意在這裏招待其他選擇。

回答

1

我發現最簡單的方法是在底層集合中插入一個「特殊」值,並在選中時顯示「(無)」文本。很明顯,你需要通過轉換器運行你的綁定來考慮這個值,並在選擇它時返回null。 (見我的這是我努力的實際空值添加到組合框的基礎集合結果的this question。)

話雖如此,它可能實際上是可以做到的,你想用CompositeCollection類的東西。您可以創建一個單獨的集合(只有一個項目 - 您的Null項目),並通過CompositeCollection將您的ComboBox綁定到它和您的原始集合。

+0

我試過這個。我沒有多少運氣將CollectionContainer的「Collection」屬性綁定到DataContext中對象的屬性(例如)。雖然從靜態資源工作很好...我在這裏錯過了什麼嗎? – 2009-07-16 06:47:39

相關問題