是否可以在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