是的,真的很好,非常感谢你,Ming!
有没有办法使用 RibbonContextualTabGroupItemsControl.cs 而不复制和覆盖所有相关的功能区源类?
我再次采用了覆盖功能区样式的方法来避免这项广泛的工作并最终成功
有一个触发器可以处理功能区的 IsMinimized-property:
<Trigger Property="IsMinimized" Value="True">
<Setter Property="Content" TargetName="mainItemsPresenterHost" Value="{x:Null}"/>
<Setter Property="Visibility" TargetName="mainItemsPresenterHost" Value="Collapsed"/>
<Setter Property="Content" TargetName="popupItemsPresenterHost" Value="{Binding ElementName=groupsBorder}"/>
<Setter Property="BorderThickness" TargetName="BackgroundBorder" Value="0,0,0,1"/>
</Trigger>
mainItemsPresenterHost-control 的内容是一个名为“groupsBorder”的边框,其中包含所有功能区选项卡。当 IsMinimized-property 更改为 true 时,此边框将移动到名为“popupItemsPresenterHost”的弹出演示者。
另一个触发器处理 IsDropDownOpen 属性:
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="BorderThickness" TargetName="BackgroundBorder" Value="0"/>
/Trigger>
我改变了两个触发器如下:
<Trigger Property="IsMinimized" Value="True">
<!--<Setter Property="Content" TargetName="mainItemsPresenterHost" Value="{x:Null}"/>-->
<!--<Setter Property="Visibility" TargetName="mainItemsPresenterHost" Value="Collapsed"/>-->
<Setter Property="Height" TargetName="mainItemsPresenterHost" Value="0"/>
<!--<Setter Property="Content" TargetName="popupItemsPresenterHost" Value="{Binding ElementName=groupsBorder}"/>-->
<Setter Property="BorderThickness" TargetName="BackgroundBorder" Value="0,0,0,1"/>
</Trigger>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter Property="BorderThickness" TargetName="BackgroundBorder" Value="0,0,0,1"/>
<Setter Property="Content" TargetName="mainItemsPresenterHost" Value="{x:Null}"/>
<Setter Property="Content" TargetName="popupItemsPresenterHost" Value="{Binding ElementName=groupsBorder}"/>
</Trigger>
请注意,我已将 mainItemsPresenterHost-control 的 Visibility-property 设置器替换为 Height-property,并将其设置为“0”。