2010-12-14 3 views
3

동적 메뉴 용 리본 컨트롤을 데이터 바인딩하려고합니다.wpf 런타임시 리본

<ribbon:Ribbon> 
    <ribbon:RibbonTab Header="Reports" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonGroupDataTemplate}"> 
    </ribbon:RibbonTab> 
    <ribbon:RibbonTab Header="Test"> 
    <ribbon:RibbonGroup Header="TestGROUP" 
     ItemsSource="{Binding ReportMenus}" 
     ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    </ribbon:RibbonGroup> 
    </ribbon:RibbonTab> 
</ribbon:Ribbon> 

상단 리본 탭은 '실제'리본 탭입니다. 밑바닥은 내가 수동으로 만들어 내 이론을 검증하고 시작했다.

<Style TargetType="{x:Type ribbon:RibbonButton}"> 
    <Setter Property="Label" 
      Value="{Binding ReportDisplayName}" /> 
</Style> 

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

을이 그룹의 DataTemplate에서 처음으로 시도 :

<DataTemplate x:Key="RibbonGroupDataTemplate"> 
    <ribbon:RibbonGroup ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
      ItemTemplate="{StaticResource RibbonButtonDataTemplate}" /> 
</DataTemplate> 
:

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" DataType="{x:Type Ribbon:RibbonGroup}" 
ItemsSource="{Binding Converter={StaticResource DebugConverter}}" 
ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

그럼이 일을 시도하고 있었다 여기

내가 사용하려고 오전 datatemplates 있습니다

문제는 그룹 아래에 버튼이 표시되지 않는다는 것입니다. 두 번째 리본 탭에서 grouptemplate을 사용하지 않으면 작동시킬 수 있습니다. 하지만 동적으로 그룹을 만들려고해도 버튼을 만들 수 없습니다. 또한 내부에있는 ribbongroup을 사용하여 datatemplate을 수행하면 표제가 잘립니다. 나는 그것에 대해 이미 읽었고 HierarchicalDatatemplate을 사용하려는 이유가되었습니다. Regular Datatemplate은 itemsource 또는 itemtemplate을 허용하지 않습니다.

그래서 Dynamic RibbonButton을 표시하는 동적 RibbonGroup을 얻으려면 어떻게해야합니까?


지금 다른 변경 사항을 구현했으며 적어도 그 내용을 채우지 만 올바르지 않습니다.

는 지금 당장은 다음과 같습니다 alt text

내가 그것을 부분적으로 하드 코딩되는 다음과 같이하고자합니다. alt text

여기 XAML

<DataTemplate x:Key="RibbonButtonDataTemplate"> 
    <ribbon:RibbonButton /> 
</DataTemplate> 

<HierarchicalDataTemplate x:Key="RibbonGroupDataTemplate" 
            DataType="{x:Type ribbon:RibbonGroup}" 
            ItemsSource="{Binding ReportsMenuCollection}" 
            ItemTemplate="{StaticResource RibbonButtonDataTemplate}"> 
    <TextBlock Text="{Binding Path=ReportDisplayName}" /> 
</HierarchicalDataTemplate> 

내가 계층 DataTemplate을 내 RibbonButtonDataTemplate을 변화 시도 남아있는 유일한 것이다.

답변

0

두 개의 계층 적 데이터 템플릿과 그룹을 나타내는 두 개의 기본 바인딩 엔터티와 항목을 나타내는 다른 하나가 필요합니다. 동일한 개념이 동적 메뉴 구조에도 적용됩니다.

+0

예를 보여줄 수 있습니까? 나는 하나의 자체 조인 된 테이블을 사용하여 구조체를 만든다 ... id, parentid, reportname; parentid = id라면 그 그룹, 그렇지 않으면 parentid ... – ecathell

+0

nm ... 나는 폴더 계층 데이터와 treeview로 작업하고있는 다른 프로젝트로 갔다. 내가 루트 객체로 작업하는 방법을 수정해야만합니다. – ecathell

+0

실제로 정규 datatemplate과 스타일은 잘 작동합니다 ... 당신이 모든 것을 올바르게 볼 수 있도록 창을 최대화하는지 확인하십시오 :) – ecathell