我正在尝试为动态菜单设置功能区控件。
<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>
这是我第一次尝试使用Group 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>
问题是我无法让按钮出现在群组下面。如果我没有像我的第二个ribbontab那样的grouptemplate,我可以让它工作。 但是,如果我尝试动态地创建组,则无法创建按钮。同样通过在其内部使用ribbongroup进行数据模板,标题会被截断。我已经读过这个,这就是尝试使用HierarchicalDatatemplate的原因。 Regular Datatemplate不允许使用itemsource或itemtemplate。
那么如何让动态RibbonGroup显示Dynamic RibbonButtons?
我现在已经实施了一些其他更改,至少填写了它,但它不正确。
现在它看起来像这样:
我希望它看起来像是部分硬编码的。
这是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更改为分层数据模板。
答案 0 :(得分:0)
您将需要两个分层数据模板和两个底层绑定实体,一个代表一个组,另一个代表一个项目。相同的概念适用于动态菜单结构。