2010-12-18 5 views
3

일부 성공과 함께 WPF 리본 컨트롤을 사용하고 있습니다. 지금은 데이터 바인딩 된 시나리오에서 범주를 사용하여 리본 갤러리를 사용하려고합니다. 다음은 몇 가지 예를 들어 데이터는 다음과 같습니다 -리본 그룹에 IGrouping 바인딩

 var data = new[] 
     { 
      new { Category = "Sport", Hobby = "Football" }, 
      new { Category = "Sport", Hobby = "Table Tennis" }, 
      new { Category = "Music", Hobby = "Guitar" }, 
      new { Category = "Music", Hobby = "Piano" }, 
      new { Category = "PC", Hobby = "StarCraft 2" }, 
     }; 

나는 데이터를 그룹화하고 카테고리별로 그룹화 갤러리에서 항목을 표시 할 해요 : -

 IEnumerable CategorisedHobbies; 
     CategorisedHobbies = data.GroupBy(d => d.Category).ToArray(); 

모든 매우 표준. 다음과 같이 내 XAML 보인다 - 그러나

   <ribbon:RibbonGallery ItemsSource="{Binding CategorisedHobbies}"> 
        <ribbon:RibbonGallery.ItemTemplate> 
         <DataTemplate> 
          <ribbon:RibbonGalleryCategory Header="{Binding Key}" ItemsSource="{Binding}" MaxColumnCount="1"> 
           <ribbon:RibbonGalleryCategory.ItemTemplate> 
            <DataTemplate> 
             <ribbon:RibbonGalleryItem Content="{Binding Hobby}"/> 
            </DataTemplate> 
           </ribbon:RibbonGalleryCategory.ItemTemplate> 
          </ribbon:RibbonGalleryCategory> 
         </DataTemplate> 
        </ribbon:RibbonGallery.ItemTemplate> 
       </ribbon:RibbonGallery> 

, 내가 제대로 리본 갤러리에 표시 범주를 얻을 동안 응용 프로그램이 실행, 각 항목은 단지 빈 사각형 인 경우. 카테고리 크기가 예를 들어 더 크다는 것을 알 수 있기 때문에 컬렉션이 바운드되고 있음을 알고 있습니다. PC보다 스포츠. 나는 XAML과 같이 물론 모든 작품을 다음과 하드 코드

alt text

을 경우 : - 내가 잘못 여기

어떤 아이디어 뭘하는지? 감사!

답변

3

OK, 나는이 "제대로"지금 작업을 입수했습니다. DataTemplate은 RibbonGallery의 ItemsContainerStyle 스타일을 적용하는 것이 었습니다.

이 스타일은 단순히 RibbonGalleryCategory 유형이어야하며 ItemsSource에 대한 속성 설정자가 있어야합니다. 내 경우 단순히 {바인딩}이었고 플러스 DisplayMemberPath를 설정해야했습니다.

RibbonGallery의 계층 구조를 완전히 이해하지 못했지만, 적어도이 접근 방식은 작동합니다.

UPDATE :

<r:RibbonWindow.Resources> 
    <Style TargetType="r:RibbonGalleryCategory" x:Key="HobbyCategoryStyle"> 
     <Setter Property="Header" Value="{Binding Key}"/> 
     <Setter Property="ItemsSource" Value="{Binding}"/> 
     <Setter Property="DisplayMemberPath" Value="Hobby"/> 
    </Style> 
</r:RibbonWindow.Resources> 
<r:RibbonMenuButton Label="Example menu button"> 
    <r:RibbonGallery ItemsSource="{Binding CategorisedHobbies}" ItemContainerStyle="{StaticResource ResourceKey=HobbyCategoryStyle}"/> 
</r:RibbonMenuButton> 
+0

여기에 XAML을 게시하고 asnswer로 표시 할 수 있습니까? – decyclone

0

이유를 확인하지만, 당신이 ItemsPanelRibbonGalleryCategory에 할당하면, 그것은 작동하지 :

<ribbon:RibbonGalleryCategory.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel IsItemsHost="True" /> 
    </ItemsPanelTemplate> 
</ribbon:RibbonGalleryCategory.ItemsPanel> 
+0

아하 : 은 여기에 원래 제공되는 코드 예제에 해당하는 XAML입니다! 확인 - 이제 항목을 목록에서 볼 수 있습니다. 그러나 XAML에서 수동으로 하드 코드 한 경우에는 선택할 수 없습니다. ItemTemplate을 어떻게 든 변경하면 기본 ItemsPanelTemplate이 손실된다는 의미입니다. 제안에 감사드립니다. –

관련 문제