Silverlight의 ItemsControl 또는 목록 상자에서 항목을 그룹화 할 수 있습니까? 이러한 컨트롤은 DomainDataSource에 바인딩됩니다.Silverlight : ItemsControl의 그룹화와 같은 Datagrid
또는이를 수행하는 제 3 자 컨트롤이 있습니까?
UPDATE :
이 내가 만들려고하고 UI의 종류입니다.
Silverlight의 ItemsControl 또는 목록 상자에서 항목을 그룹화 할 수 있습니까? 이러한 컨트롤은 DomainDataSource에 바인딩됩니다.Silverlight : ItemsControl의 그룹화와 같은 Datagrid
또는이를 수행하는 제 3 자 컨트롤이 있습니까?
UPDATE :
이 내가 만들려고하고 UI의 종류입니다.
의 솔루션은 당신은 PagedCollectionView에 바인딩 중첩 ItemsControls
를 사용하여이 작업을 수행 할 수 있습니다.
데이터 소스가 이고 필드가 Category
, Section
및 Option
인 경우를 가정 해 보겠습니다. IEnumerable(of MyItems)
에서 PagedCollectionView
을 만들고 그룹화 할 필드를 알려줄 수 있습니다. Name
이 그룹화 된 필드의 값이고 Items
포함
-Name
-Items
:
Dim original As IEnumerable(Of MyItems) = GetMyItems()
Dim pcv = New PagedCollectionView(original)
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Category"))
pcv.GroupDescriptions.Add(New PropertyGroupDescription("Section"))
는 그럼 난 내 PagedCollectionView
hisMyItems.ItemsSource = pcv.Groups
PCV
에 처음 ItemsControl
같은 중첩 hierachy를 생성 바인딩 해당 그룹의 행/개체 원하는 경우 xaml에서 PCV를 만들 수도 있습니다. 난 그 말이 희망
<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>
:
XAML처럼 보일 것입니다. 내 실제 애플 리케이션에서 물건을 단순화하려고했지만 그것을 통해 복사에 몇 가지 실수를 할 수 있습니다. 분명히 일반 ItemsControls 또는 다른 컨트롤을 사용하여 템플릿 등으로 사용자 정의 할 수 있습니다.
DataGrid 컨트롤 그룹을 지원합니다.
Tim Heuer는 DataGrid로 그룹화하는 좋은 블로그를 가지고 있습니다. link text
아마 당신이 찾고있는 컨트롤은 아마도 Toolkit의 Accordian Control입니다.
Accordian 동작 예제 인 here을 참조하십시오.
실제 모양은 다른 컨트롤처럼 스타일이 가능합니다. 기본 기능은 그렇지 않으면 직선리스트가 될 항목의 카테고리를 그룹화하는 것입니다.
고마워, 내가 살펴볼 게.나는 이것이 도메인 데이터 소스로부터의 그룹화를 지원할 지 확신하지 못한다. 또한 그룹화 수준이 1 레벨 이상 필요합니다. –
흠 .. 스티븐에게 당신의 진정한 요구 사항에 대해 언급하고 질문을 드러내는 것을 보았습니다. "그룹화"아이디어가 "Wrappanel"스타일 레이아웃과 어떻게 호환되는지 명확하지 않습니다. 귀하가 질문하시는 주 (state)를 실제적으로 달성하고 싶은 실제 UI를 명확히 편집 하시길 권합니다. – AnthonyWJones
@ AnthonyWJones- 내가 만들고자하는 이미지를 추가했습니다. 데이터 바인딩을 사용하여이 작업을 수행 할 컨트롤을 찾고 있었지만 UI를 수동으로 작성하는 코드를 작성해야하는 것처럼 보입니다. –
감사합니다. 기회가 생겼을 때를보고 내 상황에서 효과가 있는지 봅니다. –
네,하지만 데이터 그리드는 내가 원하는 것에는 적합하지 않습니다. 각 행에 대해 하나의 컨트롤 (예 : Button)을 표시하려고하지만 세로로 정렬하지 않고 가로로 배치해야합니다. 그래서 ItemsControl에서 ItemsPanel에 wrappanel을 사용하도록 스타일을 지정할 수는 있지만 DataGrid에서이 작업을 수행 할 수있는 방법은 없습니다. –