在不修改页面布局的情况下折叠命令栏可见性
本文关键字:折叠 情况下 命令 可见性 布局 修改 | 更新日期: 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 可见性设置为"折叠"时,页面布局不会移动,而无需将任何垂直对齐方式设置为顶部(因为我有一些使用底部对齐的内容(。