2009-12-16 69 views
4
設定結果的最大數量

我試圖顯示一組在ItemsControl使用DataTemplate數據的,與所述ItemsPanel組作爲尺寸3的均勻格柵X 3. ItemsControlItemsSource是設置爲綁定到基於搜索項過濾源集合的CollectionViewSource。這一切工作正常。WPF如何從CollectionViewSource

我綁定到列表是任意大小的,但我只想要顯示9個結果,但我不能爲我的生活工作如何可以:
一)限制CollectionViewSource到輸出前9項
b)將UniformPanel限制爲只有3 x 3,並且從不創建新行
c)將ItemsControl限制爲僅允許一次創建9個數據模板。

我真的很撓我的腦袋,因爲我確定這是一個常見的數據綁定場景,但我在網上找不到任何關於它的東西。

+0

根據cwap的回答,我已經完全取消了CollectionViewSource,並在視圖模型中創建了主列表和過濾列表,後者在搜索項更改時進行更新。 使用轉換器是一個好主意,並且可能比在虛擬機中包含最大輸出數量(爲什麼我將它標記爲答案)更「純粹」的MVVM,但現在我很高興在虛擬機中完成它。 歡呼聲回覆所有。 – Guy 2009-12-16 14:20:17

回答

4

兩個解決方案,我能想到的:

如果您使用的視圖模型,把邏輯在裏面創建可綁定到永遠只能有9種元素的屬性。確保它的單位測試,以確保超過9個元素永遠不會潛入集合。

另外,您可以結合項目源時,用一個converter的完整列表轉換成第一9.

+0

值得指出的是,轉換器方法可防止更改事件傳播。如果您添加或從綁定的數據源中移除,它將不會被反映。 – 2014-05-13 20:45:32

2

這只是您在XAML中無法完成的其中一項功能。

您可以創建一個「CollectionViewSourceView」(:P),每當CollectionViewSource更新時它都會更新,只輸出前9個項目。不過,這是進入代碼隱藏(或更好,視圖模型)。

1

我正要說相同的詹姆斯·海伊(使用轉換器)降低的名單,但我還補充說,你可以在XAML中綁定一個ConverterParameter來動態地指定返回多少項。

相關問題