Uwp 普兰蒂利亚新学院
如何将命令栏放在桌面的顶部和移动设备的底部?Uwp 普兰蒂利亚新学院,uwp,app.xaml,Uwp,App.xaml,如何将命令栏放在桌面的顶部和移动设备的底部?在此处输入code 在此处输入代码 <Grid.RowDefinitions> <RowDefinition x:Name="TitleRow" Height="48"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> `enter code here` <TextBlock
在此处输入code
在此处输入代码
<Grid.RowDefinitions>
<RowDefinition x:Name="TitleRow" Height="48"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
`enter code here` <TextBlock
x:Name="TitlePage"
x:Uid="Main_Title"
FontSize="{StaticResource FontSizeMedium}" Foreground="{StaticResource RedBrush}" FontWeight="SemiLight" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" VerticalAlignment="Center"
Margin="0,0,12,7"/>
`enter code here` <CommandBar x:Name="Topbar" Margin="0,0,12,7" HorizontalAlignment="Right" Background="White" Visibility="Collapsed" >
<CommandBar.PrimaryCommands>
<AppBarButton x:Name="AddButton" Icon="Accept" x:Uid="Aceptar" Foreground="{StaticResource RedBrush}" Click="AddButton_Click"/>
</CommandBar.PrimaryCommands>
</CommandBar>
`在此处输入代码`
`在此处输入代码`
由于您已经在使用VisualStates,您可以在网格中有三行,只需使用应用程序的宽度,使用AdaptiveTrigger
更改CommandBar
的Grid.Row
值即可
更新
要重新迭代我在上一条评论中所说的内容,您不再需要使用“Page.AppBar”属性。事实上,您不想使用它,因为网格的VisualStateManager
无法更改页面级属性
相反,你可以做我在下面展示的事情(这是一个完整的、有效的示例):
当应用程序在手机上时,屏幕宽度将小于640epx,命令栏将位于底部。否则,它将位于顶部。请澄清您的问题好吗?在目前的写作中,很难理解你的问题是什么。在桌面上,当我抛出模拟器时,命令栏在顶部,命令栏仍在运行,我希望它与visualstate一起运行,在桌面上,命令栏在顶部,当智能手机在底部时,问题是我停留在Samrtphone部分,不用也不用用。在使用VisualSATE之后,我正在使用模板studioTemplateStudio生成XAML。您可以在事后对其进行自定义。如果您有两个commandBar属性(Top和Bottom),则只需创建这两个属性,并根据VisualState切换commandBar.Visibility属性,因为我可以在XAML中放置较低的命令,sgun为您尝试执行的操作而编写的代码,您不想使用Page.TopAppBar和Page.BottomAppBar,因为VisualStateManager无法设置属性。相反,您可以使用我提到的方法,这样您就有了更大的灵活性。我已经更新了我的答案,提供了我刚刚测试的工作演示中的所有代码。
<Grid x:Name="ContentArea"
Margin="{StaticResource MediumLeftRightMargin}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<CommandBar x:Name="MyAppBar"
Grid.Row="0" />
<Grid Grid.Row="1" Background="DarkGray">
<TextBlock Text="This is where your page content would go"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
<!-- Adaptive triggers -->
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="WindowStates">
<VisualState x:Name="WideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="640" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MyAppBar.(Grid.Row)"
Value="0" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NarrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MyAppBar.(Grid.Row)"
Value="2" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>