对于某些控件布局计算,我需要知道通知区域的高度。当然,我知道它在WP 7/8 / 8.1中在纵向模式下等于32像素,但是对于OS的未来版本硬编码这个值并不是一个好主意。如何在Silverlight应用程序中即时检索此值?
答案 0 :(得分:1)
您无法通过代码获得通知区域的高度。
其标准为Pre-Defined
。
System 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;
}