在UWP中对CommandBar的内容进行对齐

7

如何将CommandBar内容区域中的内容水平右对齐?在周年更新之前,这是可以实现的。

1个回答

13

解决方案

禁用 IsDynamicOverflowEnabled 属性,并将 HorizontalContentAlignment 设置为 Right。这样做后,您将获得与先前的Anniversary Update SDK版本相同的行为。

    <CommandBar HorizontalContentAlignment="Right"
                IsDynamicOverflowEnabled="False">
        <CommandBar.Content>
            <TextBlock Text="Content" />
        </CommandBar.Content>
    </CommandBar>

CommandBar中心内容居中对齐

问题原因

在周年更新SDK(Windows 10版本1607)中,CommandBar控件添加了一个新属性 - IsDynamicOverflowEnabled。该属性默认设置为true,其目的是将应用栏命令从栏的主区域自动溢出到次要区域。

然而,这种添加要求更改控件的默认模板。如果您查看C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.14393.0\Generic\generic.xamlCommandBar模板的默认值,则会发现模板包含一个新的VisualStateGroup

<VisualStateGroup x:Name="DynamicOverflowStates">
<VisualState x:Name="DynamicOverflowDisabled"/>
<VisualState x:Name="DynamicOverflowEnabled">
    <VisualState.Setters>
        <Setter Target="ContentControlColumnDefinition.Width" Value="Auto"/>
        <Setter Target="PrimaryItemsControlColumnDefinition.Width" Value="*"/>
    </VisualState.Setters>
</VisualState>

默认情况下,该控件的ContentControlColumnDefinition.Width设置为*PrimaryItemsControlColumnDefinition.Width设置为Auto,这意味着内容将填充放置主要命令后留下的所有可用空间。然而,这种行为对于动态溢出来说是没有意义的,因为这需要在溢出之前使命令占用尽可能多的空间。因此,VisualState DynamicOverflowEnabled会适当地切换列宽。


感谢您的详细解释。 - kendoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接