我正在尝试为动态菜单绑定一个功能区控件。
<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>
问题是我无法让按钮显示在组下。如果我没有第二个功能区选项卡中的组模板,我可以让它工作。但是,如果我也尝试动态地进行分组,则无法创建按钮。此外,通过在其中使用功能区组执行数据模板,标题会被截断。我已经阅读过这方面的内容,这就是尝试使用 HierarchicalDatatemplate 的原因。常规数据模板不允许 itemsource 或 itemtemplate。
那么如何获得动态 RibbonGroup 来显示动态 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 更改为分层数据模板。