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>