是否可以在Silverlight中的ItemsControl或Listbox中對項目進行分組?這些控件綁定到DomainDataSource。Silverlight:在ItemsControl中像Datagrid一樣分組
或者是否有任何第三方控件可以做到這一點?
UPDATE:
這是我試圖創建這種用戶界面。
是否可以在Silverlight中的ItemsControl或Listbox中對項目進行分組?這些控件綁定到DomainDataSource。Silverlight:在ItemsControl中像Datagrid一樣分組
或者是否有任何第三方控件可以做到這一點?
UPDATE:
這是我試圖創建這種用戶界面。
解決方案您可以通過使用綁定到PagedCollectionView嵌套ItemsControls
做到這一點。
說我有一個數據源 - MyItems
- 與字段:Category
,Section
和Option
。我可以從IEnumerable(of MyItems)
創建一個PagedCollectionView
並告訴它要分組的字段。
Dim original As IEnumerable(Of MyItems) = GetMyItems()
Dim pcv = New PagedCollectionView(original)
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Category"))
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Section"))
然後,我結合我的第一ItemsControl
到PagedCollectionView
hisMyItems.ItemsSource = pcv.Groups
的PCV
創建一個嵌套層次結構,如:
-Name
-Items
其中Name
是在分組字段中的值和Items
包含該分組中的行/對象。我想你也可以在xaml中創建PCV,如果你願意的話。
的XAML看起來是這樣的:
<controls:HeaderedItemsControl x:Name="hisMyItems" Header="{Binding Name}" ItemsSource="{Binding Items}" >
<controls:HeaderedItemsControl.ItemTemplate>
<DataTemplate>
<controls:HeaderedItemsControl Header="{Binding Name}" ItemsSource="{Binding Items}" ItemsPanel="{StaticResource ItemsPanelTemplate1}" >
<controls:HeaderedItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Option}" />
</DataTemplate>
</controls:HeaderedItemsControl.ItemTemplate>
</controls:HeaderedItemsControl>
</DataTemplate>
</controls:HeaderedItemsControl.ItemTemplate>
</controls:HeaderedItemsControl>
我希望是有道理的。我試圖從我的實際應用程序中簡化事情,但是我可能在複製時犯了一些錯誤。很明顯,你可以使用普通的ItemsControls或其他控件,並使用模板等自定義。
DataGrid控件支持分組。
蒂豪華有一個很好的博客與數據網格分組。 link text
謝謝,我來看看。我不確定這會支持domaindatasource的分組。另外我需要超過1個級別的分組。 – 2010-01-08 10:54:26
嗯..我看到你的評論斯蒂芬你真正的要求和問題是有點透露。它不清楚「分組」的想法是如何與「Wrappanel」風格的佈局兼容的?我建議你編輯你的問題狀態明確什麼真正的用戶界面,你真的想達到目的。 – AnthonyWJones 2010-01-08 11:55:06
@ AnthonyWJones-我添加了一個我正在嘗試創建的圖像。我正在尋找一個控件來做到這一點使用數據綁定,但它看起來像我只需要編寫一些代碼手動創建用戶界面。 – 2010-01-08 14:37:17
謝謝,我有機會時會看看這是否適合我的情況。 – 2010-09-13 08:49:22
是的我知道,但datagrid是不是真的適合我想要的。我想爲每行顯示一個控件(例如按鈕),但這些控件需要水平換行而不是垂直換行。所以在ItemsControl中,你可以使ItemsPanel的樣式使用一個wrappanel,但是我不能在DataGrid中看到這樣做的方法。 – 2010-01-07 16:20:48