我正在试图绑定动态菜单的功能区控件。在运行时构建wpf功能区
<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>
顶部功能区选项卡是我的'真正'ribbontab。底部开始作为手动建立,我正在验证我的理论。
这里有我想要使用的DataTemplates:
<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>
问题是,我不能让按钮显示在组下。如果我的第二个ribbontab中没有组模板,我可以使用它。 但是,如果我尝试动态地执行该组,则无法创建按钮。同样通过使用里面的ribbongroup的数据模板,标题被截断。我已经阅读过这些内容,这就是尝试使用HierarchicalDatatemplate的原因。 Regular Datatemplate不允许使用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对层次的DataTemplate的唯一的事。
你能告诉我一个例子吗?我只使用一个自联表创建结构... id,parentid,reportname;如果parentid = id那么它的一个组,否则它是一个孩子的任何parentid ... – ecathell 2010-12-14 19:48:10
纳米...我去了另一个项目,我正在与文件夹分层数据和树视图。我不得不修改我如何使用根对象 – ecathell 2010-12-14 20:24:45
实际上是一个常规的数据样式和样式工作得很好......只要确保最大化您的窗口,以便您可以正确地看到它:) – ecathell 2010-12-17 23:09:38