在 UWP 中对齐 CommandBar 的内容
Aligning Content of CommandBar in UWP
如何将 CommandBar
的内容部分中的内容水平对齐?在周年更新之前,这仍然是可能的。
解决方案
禁用 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\DesignTime\CommonConfiguration\Neutral\UAP.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
,这意味着内容将填充所有可用的 space 在输入主要命令后离开。然而,这种行为对于动态溢出没有意义,因为这要求命令在溢出之前尽可能多地使用 space 。因此,VisualState
DynamicOverflowEnabled
适当地切换列宽。
如何将 CommandBar
的内容部分中的内容水平对齐?在周年更新之前,这仍然是可能的。
解决方案
禁用 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\DesignTime\CommonConfiguration\Neutral\UAP.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
,这意味着内容将填充所有可用的 space 在输入主要命令后离开。然而,这种行为对于动态溢出没有意义,因为这要求命令在溢出之前尽可能多地使用 space 。因此,VisualState
DynamicOverflowEnabled
适当地切换列宽。