BottomAppBar有时会位于页面内容之上

时间:2014-10-07 00:05:10

标签: xaml windows-phone-8.1 mvvm-light

我有一个WP8.1应用程序,整体结构非常简单。它附加了大量的绑定语句和行为(交互性),所以我不打算发布整个事情,但这里的一般想法是伪XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <MapControl Grid.Row="0" />
    <ListBox Grid.Row="1" MaxHeight="300" />
</Grid>
<Page.BottomAppBar>
    <CommandBar>
        ...AppBarButtons go here
    </CommandBar>
</Page.BottomAppBar>

一切正常。地图占据了大部分屏幕,下面列出了搜索结果(如果有)。但我的应用程序也响应了ms-drive-to请求,在这种情况下,我从URI获取请求的地址并将其添加到OnNavigatedTo中的搜索结果中。那就是问题发生的地方。

当从URI请求打开时,大约每四次一次,底部应用栏位于页面内容的顶部而不是在其下方(请参阅第二个屏幕截图,您几乎可以看到所选列表的蓝色部分)应用栏上方的项目)。如果我做了一些导致屏幕刷新的事情(比如用Placement =&#34; Full&#34打开弹出窗口),问题就会消失,页面会正常呈现。

在我看来,这似乎是一个XAML错误,但我无法想到解决它的方法。我已尝试在页面和应用栏的已加载事件中处理URI请求(以确保在操作ListBox的项目源之前完全绘制所有内容),但这不起作用。我也尝试将Page.BottomAppBar移动到布局的顶部,希望它首先被渲染,但这也不起作用。

关于唯一可行的方法是大幅度降低应用栏的复杂性,就像摆脱所有绑定和行为一样,只有一个图标无效,这显然不可行,但是似乎表明应用栏需要花费太长时间来呈现自己,并且它会搞砸页面布局。有什么想法吗?

OK Wrong

编辑:我最终&#34;修复&#34;这是通过从命令栏按钮中删除半复杂的弹出按钮并使用单独的视图来实现的。我猜命令栏的启动时间太长,因此UI的其余部分将其击败到屏幕空间。

0 个答案:

没有答案