旋转重叠WP 8.1 Universal app中的其他元素(并自动更改边距)

时间:2014-07-15 07:33:45

标签: c# .net winrt-xaml windows-phone-8.1

以下XAML显示了Windows Phone 8.1 Universal应用程序页面的内容。我们的想法是在枢轴顶部设置一个条形。但是枢轴与条形图重叠,而蓝色的样本网格按预期工作。

<Grid>        
    <Grid.RowDefinitions>
        <RowDefinition Height="50" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Grid Background="{StaticResource PhoneAccentBrush}" Height="50" />
    <Pivot Grid.Row="1" Background="Green" Width="200" HorizontalAlignment="Left" />
    <Grid Grid.Row="1" Background="Blue" Width="200" HorizontalAlignment="Right" />
</Grid>

生成的页面如下所示:

enter image description here

这种“负利润”来自哪里?

如何避免?

BTW:设置边距不是解决方案,因为它引入了其他问题,例如使用SemanticZoom控件时跳转GUI,我需要知道解决问题的根本原因...

信息:似乎Windows Phone Pivot会根据当前屏幕设置自动更改边距(显示/隐藏状态栏)。因此,如果您的应用在某些情况下更改状态栏的状态,您将最终获得跳跃/更改枢轴控件。

2 个答案:

答案 0 :(得分:2)

我找到了一个解决方案并为Pivot控件创建了一个简单的附加属性。

附加属性可以这样使用:

<Pivot controls:PivotExtensions.DisableAutoMargin="True">
    <PivotItem Header="A">
        ...
    </PivotItem>
    <PivotItem Header="B">
        ...
    </PivotItem>
</Pivot>

具有附加属性的类可以在这里找到: http://mytoolkit.codeplex.com/SourceControl/latest#MyToolkit.Extended.WinRT/Controls/PivotExtensions.cs

下行:您不能再覆盖模板,因为附加属性已经更改了模板...

答案 1 :(得分:1)

覆盖控件模板似乎无法正常工作;控件中有一些代码可以在构造后设置边距。在Loaded事件上的违规网格上设置保证金也不起作用,之后运行负保证金代码。

我发现让奇怪的行为消失的唯一方法是让你的UI重叠状态栏:

ApplicationView.GetForCurrentView()
  .SetDesiredBoundsMode(ApplicationViewBoundsMode.UseCoreWindow);

然后,Pivot控件表示它不需要尝试覆盖状态栏。请注意,您现在必须在页面布局中留出空间,以防止与状态栏重叠。