我正在使用最新版本的Fluent.Ribbon
. 我一直在做一些造型,其中大部分需要完全替换 Styles 和 ControlTemplates,但我遇到了障碍。我的应用程序的标题在标题栏中居中,我无法让它向左移动。
我的视觉树如下所示:
MainWindow
Grid
Adorner
Grid
DockPanel
PART_Icon
PART_RibbonTitleBar
Grid
PART_HeaderHolder [ContentPresenter]
TextBlock
PART_ItemsContainer
PART_QuickAccessToolbarHolder
Fluent:RibbonTitleBar
我将ControlTemplate 和 Style的当前版本复制到我的覆盖xaml
中以进行修改,但我所做的没有任何区别(是的,它正在加载我的覆盖样式。)
当我在应用程序中使用检查器工具时,我可以突出显示的唯一元素是最里面的元素TextBlock
,它完全适合文本而没有拉伸,以及DockPanel
上面的几个级别,它拉伸了整个窗口宽度。在原始窗口 ControlTemplate 中,您可以在此处看到,是已设置RibbonTitleBar
的最后一个元素。确实有一个全宽的RenderSize,但下面它的 RenderSize 为. 然后在里面有一个完全覆盖标题文本的 RenderSize。DockPanel
LastChildFill
RibbonTitleBar
Grid
0,0
PART_HeaderHolder
HorizontalAlignment
我是否将各种元素设置为Left
或似乎并不重要Stretch
。我还尝试将最里面的容器更改Grid
为其他容器类型,例如DockPanel
和StackPanel
. 布局没有任何改变。
这是我对RibbonTitleBar
. 我所做的唯一更改是我将 QuickAccessToolbar 移动到最后并永久折叠它(如果我尝试删除它,应用程序会崩溃寻找它)并且我尝试在内部定义一些列Grid
但无济于事。
<Style TargetType="{x:Type Fluent:RibbonTitleBar}">
<Setter Property="Template"
Value="{DynamicResource RibbonTitleBarControlOverride}" />
<Setter Property="Focusable"
Value="False" />
<Setter Property="VerticalAlignment"
Value="Top" />
<Setter Property="HorizontalAlignment"
Value="Stretch" />
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Margin="-2,0"
VerticalAlignment="Center"
HorizontalAlignment="Stretch"
Text="{Binding}"
TextWrapping="NoWrap"
TextTrimming="CharacterEllipsis" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="RibbonTitleBarControlOverride"
TargetType="{x:Type Fluent:RibbonTitleBar}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0" x:Name="PART_HeaderHolder"
HorizontalAlignment="Left"
ContentSource="Header"
IsHitTestVisible="False" />
<Fluent:RibbonContextualGroupsContainer Grid.Column="1" x:Name="PART_ItemsContainer"
IsItemsHost="True" />
<ContentPresenter x:Name="PART_QuickAccessToolbarHolder"
ContentSource="QuickAccessToolBar" Visibility="Collapsed" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsCollapsed"
Value="True">
<Setter Property="Visibility"
Value="Collapsed"
TargetName="PART_ItemsContainer" />
</Trigger>
<Trigger Property="HideContextTabs"
Value="True">
<Setter Property="Visibility"
Value="Collapsed"
TargetName="PART_ItemsContainer" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>