gpt4 book ai didi

wpf - 在运行时构建 wpf Ribbon

转载 作者:行者123 更新时间:2023-12-01 09:10:37 29 4
gpt4 key购买 nike

我正在尝试为动态菜单绑定(bind)功能区控件。

<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>

这是我第一次尝试组数据模板:

<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 的原因。常规数据模板不允许项目源或项目模板。

那么我如何获得动态 RibbonGroup 来显示动态 RibbonButtons?


我现在已经实现了一些其他更改并且至少填写了它,但是它不正确。

现在看起来像这样: alt text

我希望它看起来像这样,部分硬编码。 alt text

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

最佳答案

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

关于wpf - 在运行时构建 wpf Ribbon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442381/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com