3

動的メニューのリボンコントロールをデータバインドしようとしています。

<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での私の最初の試みです。

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

それから私はこれを試していました:

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

問題は、グループの下にボタンを表示できないことです。2番目のribbontabのようにgrouptemplateがない場合は、動作させることができます。しかし、グループを動的に実行しようとすると、ボタンを作成できません。また、内部にリボングループを使用してデータテンプレートを実行すると、見出しが途切れます。私はすでにそれについて読みました、そしてそれがHierarchicalDatatemplateを使おうとする理由でした。通常のデータテンプレートでは、itemsourceまたはitemtemplateは使用できません。

では、動的リボングループを取得して動的リボンボタンを表示するにはどうすればよいですか?


私は今、他のいくつかの変更を実装し、少なくともそれを埋めていますが、正しくありません。

現在、次のようになっています。 代替テキスト

部分的にハードコーディングされたこのように見せたいです。 代替テキスト

これが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>

あとは、RibbonButtonDataTemplateを階層データテンプレートに変更するだけです。

4

1 に答える 1

0

2つの階層データテンプレートと2つの基になるバインディングエンティティが必要になります。1つはグループを表し、もう1つはアイテムを表します。同じ概念が動的メニュー構造にも当てはまります。

于 2010-12-14T18:04:06.057 に答える