我目前有一個GridView填充了ItemsSource綁定到一個ObservableCollection。如何在綁定ItemsSource後手動向GridView.Items添加項目?
它顯示了我想要的項目,但我想在結尾處手動添加一個看起來和行爲不同的項目。有沒有辦法我可以做到這一點,而無需修改ItemsSource綁定的ObservableCollection?
我目前有一個GridView填充了ItemsSource綁定到一個ObservableCollection。如何在綁定ItemsSource後手動向GridView.Items添加項目?
它顯示了我想要的項目,但我想在結尾處手動添加一個看起來和行爲不同的項目。有沒有辦法我可以做到這一點,而無需修改ItemsSource綁定的ObservableCollection?
有兩種方法可供選擇:
使用MVVM原始集合將被從模型層拉昇和附加項目將在視圖模型中添加。它可以工作,因爲您可以考慮附加項目只有的視圖,例如。例如您需要添加「以上全部」的輪詢選項列表。
當綁定ItemsSource
時,將兩個集合分開,然後使用IValueConverter
將它們連接/連接在一起。這種方法比較棘手,只有當你需要分離和合並兩個集合時,纔會非常有用。一個集合中的項目列表以及另一個項目類別的列表,但也是組合的。
我已經在一個廣泛使用的大型WPF應用程序中成功地使用了這兩種方法。如果你想了解MVVM的更多細節或者選擇#2的轉換器的例子,請告訴我。
編輯:閱讀關於這個問題的評論,如果你沒有說你願意,你可以做到這一點使用選擇DataTemplateSelector
和/或ItemContainerStyleSelector
附加項目不同的視覺或行爲。我最近使用了選項#2和模板選擇的組合。
希望這會有所幫助!
一些選項:
使用CompositeCollection,你可以定義這是XAML。不知道它是否可以解決問題,你可能需要玩一下
創建一個新的集合背後的場景,填充集合中的項目+額外的項目。
編寫一個轉換器,而不是創建一個新的集合(或返回一個IEnumerable)並添加新的項目。
我想所有這些選項都有一個共同的主題,因爲它們都是一個新的集合。您基本上不能直接綁定到原始集合,因爲它沒有額外的項目,所以您必須以某種形式綁定到其他項目。
當你說外觀和行爲不同時,你更準確地表達什麼意思?另一個'DataTemplate' –
基本上網格將包含一堆圖像,並有最後一個網格項目說'查看所有'。 – xster