【问题标题】:Aligning Content of CommandBar in UWP在 UWP 中对齐 CommandBar 的内容
【发布时间】:2016-12-31 18:37:41
【问题描述】:

如何将CommandBar 的内容部分中的内容水平对齐?在周年更新之前,这仍然是可能的。

【问题讨论】:

    标签: uwp-xaml


    【解决方案1】:

    解决方案

    禁用IsDynamicOverflowEnabled 属性并将HorizontalContentAlignment 设置为Right。完成此操作后,您将获得与周年更新前 SDK 版本相同的行为。

        <CommandBar HorizontalContentAlignment="Right"
                    IsDynamicOverflowEnabled="False">
            <CommandBar.Content>
                <TextBlock Text="Content" />
            </CommandBar.Content>
        </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.xaml 中默认的CommandBar 模板,您会看到该模板包含一个新的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,这意味着内容将填满放置主要命令后剩余的所有可用空间。然而,这种行为对于动态溢出没有意义,因为这需要命令在溢出之前占用尽可能多的空间。因此,VisualStateDynamicOverflowEnabled 会适当地切换列宽。

    【讨论】:

    • 感谢您的详细解释。
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多