動的メニューのリボンコントロールをデータバインドしようとしています。
<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を階層データテンプレートに変更するだけです。