1

我正在使用最新版本的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。DockPanelLastChildFillRibbonTitleBarGrid0,0PART_HeaderHolder

HorizontalAlignment我是否将各种元素设置为Left或似乎并不重要Stretch。我还尝试将最里面的容器更改Grid为其他容器类型,例如DockPanelStackPanel. 布局没有任何改变。

这是我对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>
4

0 回答 0