2012-05-10 77 views
0

對於我的項目,我需要一個scatterview,但我們稱之爲不使用surface sdk :)的人的列表框,並且它綁定到我的viewmodel中的可觀察對象集合。根據對象的種類,我使用不同的數據模板(圖像,視頻,...)WPF Listbox在運行時更改容器

這些項目的容器默認爲listboxitem。

但有一個特殊的對象,我需要比普通的listboxitem更多的容器,所以我創建了我的customlistboxcontainer。如果在這裏找到了如何使用容器:

Have a databound WPF Listbox generate subclassed ListboxItems

,但這是不夠的。我需要在運行時檢查哪些項目已添加到集合中,併爲其選擇正確的容器(listboxitem,customlistboxitem)。我似乎無法得到工作。

有沒有人有這樣的經驗?

THX,

比約恩

+0

那麼,你可能會更具體一點,你想添加什麼項目,也許它會證明你畢竟不需要特殊的容器。如果你真的這樣做,你可以詳細說明你如何實現添加項目功能。 –

回答

0

如果您需要爲不同類型的項目提供了不同的模板,我建議提供您的ListBox一個DataTemplateSelector。我認爲MSDN的例子很清楚如何實現它,但讓我們知道你是否需要進一步的幫助。

更新: 這是另一個tutorial爲了讓你開始。

+0

感謝您的幫助,但這還不夠。我正在使用這個allready有不同的意見,但我真的需要不同的容器,因爲有些方法需要重寫。並且使用數據模板選擇器,您不能選擇容器。 –

+0

@BjornVdkerckhove如何使用MyListBoxItem填充ObservableCollection,並重寫ListBox上的IsItemItsOwnContainerOverride以始終返回true?它不是純粹的MVVM,但它允許您在綁定之前指定容器。 –

+0

這值得一試! –