wpf - GroupSizeDefinition 不适用于为功能区组定义的样式
问题描述
我有一个主列表,它是一个功能区组。在每个功能区组内都有另一个列表,称为功能区按钮的子功能。
<DataTemplate x:Key="buttonTempl">
<RibbonButton IsEnabled="{Binding IsEnabled}" Label="{Binding Path=SubFunctionName}" Command="{Binding SubFunctionCommand}" LargeImageSource="{Binding LargeButtonImage}" SmallImageSource="{Binding SmallButtonImage}"/>
</DataTemplate>
<RibbonGroupSizeDefinitionBaseCollection x:Key="groupSize">
<RibbonGroupSizeDefinition IsCollapsed="False" />
</RibbonGroupSizeDefinitionBaseCollection>
<Style TargetType="RibbonGroup" x:Key="groupStyle">
<Setter Property="GroupSizeDefinitions" Value="{StaticResource groupSize}"/>
<Setter Property="Header" Value="{Binding DisplayName}"/>
<Setter Property="ItemsSource" Value="{Binding SubFunctions}"/>
<Setter Property="ItemTemplate" Value="{StaticResource buttonTempl}"/>
<Setter Property="SmallImageSource" Value="{Binding RibbonGroupSmallImageSource}"/>
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="RibbonTab" x:Key="tabStyle">
<Setter Property="Header" Value="Pump"/>
<Setter Property="ItemsSource" Value="{Binding MainFunctions}"/>
<Setter Property="ItemContainerStyle" Value="{StaticResource groupStyle}"/>
</Style>
因此,如果我使用如下单独的功能区组,groupSizeddefinition 正在工作:
<RibbonGroup Header="Selection" Name="SelectionMenu" GroupSizeDefinitions="{StaticResource groupSize}">
但不能使用上面带有模板的代码。
将ribbongroup定义为样式可以做些什么来工作groupsizeddefinition?
解决方案
这不是一个真正的答案,但评论太多了。
我试图重现这个问题,并在调试器中使用“Live Visual Tree”和“Live Property Explorer”窗口观察到以下效果。
明确指定 GroupSizeDefinitions
<RibbonGroup Style="{StaticResource groupStyle}" GroupSizeDefinitions="{StaticResource groupSize}" />
样式中的GroupSizeDefinitions被划掉,使用本地定义
在样式中指定 GroupSizeDefinitions
<RibbonGroup Style="{StaticResource groupStyle}"/>
Live property explorer 显示了一个本地定义,我认为它不存在,也被划掉了。
实际使用的 GroupSizeDefinitions 位于 Coercion 标题下。
恐怕我无法解释,但也许其他人可以。
推荐阅读
- aws-lambda - 如何使用 aws-sdk 连接到基于 serverless-offline-ssm 构建的本地 SSM?
- django - Fargate 更新到 1.4 后 Django Collectstatic 的 AWS ECS PermissionError
- javascript - 如何将相同的文本从一个文本区域显示到另一个文本区域,反之亦然?
- c++ - 如何在 C++ 中正确地使用 free() 和 malloc()
- postgresql - Postgresql 服务器无法启动,错误:无法更改所有者或权限
- javascript - 如何获得随机响应 ping?
- java - 如何添加在 Java 中运行了多少次的摘要报告?
- c++ - 如何使用两个顶点缓冲区?
- java - 打印由数字表示的数据的垂直直方图
- django - Django表单小部件:如何将最大值设置为每个项目的数据库值?