Silverlight の ItemsControl または Listbox でアイテムをグループ化することは可能ですか? これらのコントロールは DomainDataSource にバインドされます。
または、これを行うサードパーティのコントロールはありますか?
アップデート:
これは、私が作成しようとしている種類の UI です。
Silverlight の ItemsControl または Listbox でアイテムをグループ化することは可能ですか? これらのコントロールは DomainDataSource にバインドされます。
または、これを行うサードパーティのコントロールはありますか?
アップデート:
これは、私が作成しようとしている種類の UI です。
これを行うには、 PagedCollectionViewにネストされたItemsControls
バインドを使用します。
私はデータソースを持っているとしましょう - MyItems
- フィールド: Category
,Section
とOption
. PagedCollectionView
からを作成し、IEnumerable(of MyItems)
グループ化するフィールドを指定できます。
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
whereName
はグループ化されたフィールドの値であり、そのグループ化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コントロールはグループ化をサポートします。
Tim Heuerは、データグリッドを使用したグループ化に関する優れたブログを持っています。 リンクテキスト
DavidAnsのソリューションを確認してください http://blogs.msdn.com/b/delay/archive/2010/03/17/confessions-of-a-listbox-groupie-using-ivalueconverter-to-create-a-grouped-アイテムのリスト-simply-and-flexibly.aspx