2

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

4

3 回答 3

1

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

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

您可以在此处获取有关可访问内容的更多信息

于 2014-06-05T10:43:01.500 回答
1
double contentScaleFactor = (double)Application.Current.Host.Content.ScaleFactor / 100;
double systemTrayHeight = 32 / contentScaleFactor;

或 72 用于横向。像 Lumia 1520 这样的手机可以放大应用内容,所以你必须进行调整。

于 2014-08-07T16:40:54.180 回答
0

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

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;
}
于 2014-06-05T11:35:30.437 回答