折叠CommandBar可见性而不修改页面布局

时间:2014-12-12 14:15:03

标签: c# xaml visual-studio-2013 windows-phone windows-phone-8.1

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

我在应用程序中显示了一些Flyout,代码类似于:

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);

我崩溃了CommandBar,因为我不希望它在显示Flyout时浪费空间。 问题在于,有时当Flyout关闭时,我可以看到整个页面布局被移动的时间只有几分钟。在页面底部(为了覆盖空白区域是CommandBar),如果CommandBar重新出现后立即重新启动,这看起来很丑:/

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

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

谢谢! :)

塞尔吉奥

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

再次感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

这是我的主页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可见性设置为Collapsed时,页面布局不会移位,而无需将任何垂直对齐设置为顶部(因为我有一些使用底部对齐的东西)。

相关问题