일부 컨트롤 레이아웃 계산의 경우 알림 영역의 높이를 알아야합니다. 물론 WP 7/8/8.1에서는 세로 모드에서 32 픽셀과 동일하다는 것을 알고 있지만 OS의 향후 릴리스에서이 값을 하드 코딩하는 것은 좋지 않습니다. Silverlight 앱에서이 값을 즉시 검색하려면 어떻게해야합니까?WP 시스템 트레이 (알림 영역) 높이 검색
답변
액세스에 대한 자세한 정보 here를 얻을 수 있습니다 윈도우 폰 7
의 가이드 라인 UI를 설계 지침 당과의 상호 작용과 같다. 우리는 메인 레이아웃 루트 제어 (일반적으로 그리드)에 대한 수직 오프셋을 결정할 수 있으며, 시스템 트레이의 높이가 될 것입니다 : 가로 방향의 경우
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;
}
코드로 알림 영역의 높이를 가져올 수 없습니다.
표준은 Pre-Defined
입니다. System Tray
은 전화 화면 상단의 작은 작은 막대입니다. 세로 모드로 표시됩니다. 응용 프로그램이 세로 모드로 설정되면 시스템 트레이의 height
은 32 pixel
이되고 응용 프로그램이 Landscape mode
으로 설정되면 시스템 트레이의 너비는 72 pixel
이됩니다. 이것은 당신은 해결 방법을 찾을 수
"얻을 수 없다"는 우리의 답변이 아닙니다. :) 이 질문에 대한 내 대답을보십시오. – TecMan
double contentScaleFactor = (double)Application.Current.Host.Content.ScaleFactor/100;
double systemTrayHeight = 32/contentScaleFactor;
또는 (72). Lumia 1520과 같은 휴대 전화는 앱 콘텐츠를 확장하므로 앱을 조정해야합니다.
귀하의 대답은 정확하지만 화면의 실제 높이에 관해 이야기 할 경우. Height/MinHeight/Maxheight 속성의 값으로 사용할 수있는 높이가 필요했습니다. 32 비트 픽셀을 동적으로 계산할 필요가 있었기 때문에 OS의 최신 릴리스에서 변경 될 수 있습니다. 사실, 코드에서 동일한 32 픽셀을 하드 코딩했습니다. – TecMan
시스템 트레이에 대한 우리의 접근법은 불투명도를 0으로 설정하고 심을 페이지 상단에 놓는 것이 었습니다. 따라서 심을 켜고 끄면 내용이 움직이지 않았습니다. 귀하의 대답으로 우리는 불투명도를 1로 설정하고 레이아웃 업데이트를 기다린 다음 오프셋을 기록하고 다시 0으로 설정해야합니다. "32"숫자가 그 숫자가 DPI 독립적이기 때문에 변경 가능성이 매우 낮다고 생각합니다 . 나는 시스템 트레이 크기를 얻는 더 좋은 방법이 있다고 생각하지 않는다 (스카우트 레이아웃 패스를 피하면서). – RandomEngy
어쨌든 "불투명도를 1로 설정하고 레이아웃 업데이트를 기다린 다음 오프셋을 기록하는 것은 흥미로운 아이디어입니다." 몇 가지 작업 코드를 보여줄 수 있습니까? 타이머 또는 다른 기술을 사용하여 어떻게 기다리나요? – TecMan
이 기술은 가로 방향을 지원하도록 페이지를 설정하면 실패합니다. @RandomEngy - 하드 코드 '32', '72'및 'ScaleFactor'를 고려한 응답이 가장 좋은 방법입니다. –