检索WP系统托盘(通知区域)高度

时间:2014-06-05 10:27:12

标签: silverlight windows-phone height system-tray notification-area

对于某些控件布局计算,我需要知道通知区域的高度。当然,我知道它在WP 7/8 / 8.1中在纵向模式下等于32像素,但是对于OS的未来版本硬编码这个值并不是一个好主意。如何在Silverlight应用程序中即时检索此值?

3 个答案:

答案 0 :(得分:1)

您无法通过代码获得通知区域的高度。

其标准为Pre-DefinedSystem Tray是电话屏幕顶部的小小条。它以纵向模式显示。当您的应用程序设置为纵向模式时,系统托盘的height变为32 pixel,当应用程序设置为Landscape mode时,系统托盘的宽度变为72 pixel 。这是根据Windows Phone 7的UI设计指南和交互指南。

您可以获得有关可访问内容的更多信息 here

答案 1 :(得分:1)

double contentScaleFactor = (double)Application.Current.Host.Content.ScaleFactor / 100;
double systemTrayHeight = 32 / contentScaleFactor;

或横向为72。像Lumia 1520这样的手机可以扩展应用程序内容,因此您必须对其进行调整。

答案 2 :(得分:0)

找到了解决方法。我们可以确定主布局根控件(通常是网格)的垂直偏移量,它将是系统托盘的高度:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    GeneralTransform gt = LayoutRoot.TransformToVisual(Application.Current.RootVisual as UIElement);
    Point offset = gt.Transform(new Point(0, 0));
    double systemTrayHeight = offset.Y;
}