以下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>
生成的页面如下所示:
这种“负利润”来自哪里?
如何避免?
BTW:设置边距不是解决方案,因为它引入了其他问题,例如使用SemanticZoom控件时跳转GUI,我需要知道解决问题的根本原因...
信息:似乎Windows Phone Pivot会根据当前屏幕设置自动更改边距(显示/隐藏状态栏)。因此,如果您的应用在某些情况下更改状态栏的状态,您将最终获得跳跃/更改枢轴控件。
答案 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控件表示它不需要尝试覆盖状态栏。请注意,您现在必须在页面布局中留出空间,以防止与状态栏重叠。