2010-01-07 2 views

답변

5

의 솔루션은 당신은 PagedCollectionView에 바인딩 중첩 ItemsControls를 사용하여이 작업을 수행 할 수 있습니다.

데이터 소스가 이고 필드가 Category, SectionOption 인 경우를 가정 해 보겠습니다. 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 또는 다른 컨트롤을 사용하여 템플릿 등으로 사용자 정의 할 수 있습니다.

0

DataGrid 컨트롤 그룹을 지원합니다.

Tim Heuer는 DataGrid로 그룹화하는 좋은 블로그를 가지고 있습니다. link text

+0

네,하지만 데이터 그리드는 내가 원하는 것에는 적합하지 않습니다. 각 행에 대해 하나의 컨트롤 (예 : Button)을 표시하려고하지만 세로로 정렬하지 않고 가로로 배치해야합니다. 그래서 ItemsControl에서 ItemsPanel에 wrappanel을 사용하도록 스타일을 지정할 수는 있지만 DataGrid에서이 작업을 수행 할 수있는 방법은 없습니다. –

0

아마 당신이 찾고있는 컨트롤은 아마도 Toolkit의 Accordian Control입니다.

Accordian 동작 예제 인 here을 참조하십시오.

실제 모양은 다른 컨트롤처럼 스타일이 가능합니다. 기본 기능은 그렇지 않으면 직선리스트가 될 항목의 카테고리를 그룹화하는 것입니다.

+0

고마워, 내가 살펴볼 게.나는 이것이 도메인 데이터 소스로부터의 그룹화를 지원할 지 확신하지 못한다. 또한 그룹화 수준이 1 레벨 이상 필요합니다. –

+0

흠 .. 스티븐에게 당신의 진정한 요구 사항에 대해 언급하고 질문을 드러내는 것을 보았습니다. "그룹화"아이디어가 "Wrappanel"스타일 레이아웃과 어떻게 호환되는지 명확하지 않습니다. 귀하가 질문하시는 주 (state)를 실제적으로 달성하고 싶은 실제 UI를 명확히 편집 하시길 권합니다. – AnthonyWJones

+0

@ AnthonyWJones- 내가 만들고자하는 이미지를 추가했습니다. 데이터 바인딩을 사용하여이 작업을 수행 할 컨트롤을 찾고 있었지만 UI를 수동으로 작성하는 코드를 작성해야하는 것처럼 보입니다. –