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>

这是我对 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 更改为分层数据模板。

4

1 回答 1

0

您将需要两个层次数据模板和两个底层绑定实体,一个代表一个组,另一个代表一个项目。同样的概念也适用于动态菜单结构。

于 2010-12-14T18:04:06.057 回答