在不修改页面布局的情况下折叠命令栏可见性

本文关键字:折叠 情况下 命令 可见性 布局 修改 | 更新日期: 2023-09-27 18:34:11

我正在开发一个 WP8.1 XAML 应用程序,但应用程序栏有问题。

我在应用内显示了几个浮出控件,其代码类似于以下内容:

Flyout flyout = new Flyout();
flyout.Content = new SomeStuffUserControl();
flyout.Placement = FlyoutPlacementMode.Full;
flyout.Opened += (s, e) =>
{
       commandBar.Visibility = Visibility.Collapsed;                 
};
flyout.Closed += (s, e) =>
{
       commandBar.Visibility = Visibility.Visible;
}
flyout.ShowAt(Window.Current.Content as FrameworkElement);

我折叠了命令栏,因为我不希望它在显示浮出控件时浪费空间。问题是,有时当浮出控件关闭时,我可以看到整个页面布局被"移"到页面底部(以覆盖命令栏的空白区域(,并且如果一旦命令栏再次出现就向上移动,这看起来很丑陋:/

如果我没记错的话,在WP8.0中,我可以将AppBar不透明度设置为0.9(例如(,然后页面布局不会将其视为"占用空间",而是会覆盖AppBar后面的整个页面。这样,如果我折叠了 AppBar 可见性,页面布局就不会更改。

有没有办法在WP8.1中做到这一点?

谢谢! :)

塞吉奥

编辑:我找到了一个解决方案,并补充说作为答案,以防其他人会发现有用的:)

再次感谢您的帮助!

在不修改页面布局的情况下折叠命令栏可见性

好的,我找到了解决问题的方法:)

这是我主页的 XAML 的一部分:

<!--LayoutRoot-->
<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition x:Name="mainRow" Height="*"/>
    </Grid.RowDefinitions>
    <!--Page content and stuff-->
</Grid>

我添加了该行定义并在页面构造函数中使用它:

public Mypage()
{
    this.Loaded += (s, e) =>
    {
        mainRow.MaxHeight = mainRow.ActualHeight;
        mainRow.Height = new GridLength(mainRow.ActualHeight, GridUnitType.Pixel);             
    };
    this.InitializeComponent();
    //Stuff
}

现在,当我将 BottomAppBar 可见性设置为"折叠"时,页面布局不会移动,而无需将任何垂直对齐方式设置为顶部(因为我有一些使用底部对齐的内容(。