2014-11-16 5 views
0

Windows Phone 8.1 응용 프로그램의 공용 헤더를 만들려고합니다. 헤더는 모든 페이지에서 공통적이어야합니다. 나는 Windows Phone App Development가 처음이다. 아무도 그렇게 할 수있는 최선의 가장 깨끗한 방법을 제안 할 수 있습니까?Windows Phone 8.1 응용 프로그램의 공통 머리글

답변

1

옵션 1

당신이 절대적으로 모든 페이지 하나를 제외하지 않고, 당신이 당신의 프레임의 외부 컨트롤을 배치 할 수 있습니다하는 것이 일반적 헤더를 가지고 계획이라면. 그렇게하면 페이지 탐색간에 계속 유지됩니다.

먼저 머리글을 UserControl로 만듭니다 (프로젝트 -> 새 항목 추가 -> 사용자 정의 컨트롤). 그런 다음 App.xaml.cs를 (또는 프레임을 만드는 곳)에 Application.OnLaunched() 재정에, 이제 헤더가 유사한 모든 페이지에 나타납니다이

var grid = new Grid(); 
grid.Margin = new Thickness(0, 26, 0, 0); // compensate for status bar 
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); 
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); 

var header = new MyHeaderUserControl(); 
grid.Children.Add(header); 

Grid.SetRow(rootFrame, 1); 
grid.Children.Add(rootFrame); 

Window.Current.Content = grid; 

와 함께이 라인

// Place the frame in the current Window 
Window.Current.Content = rootFrame; 

교체 이것에 :

screenshot

몇 가지 포인트 :

  • 이런 식으로 앱을 디자인 할 필요가 없었으므로 이런 식으로 돌아가는 결과가 무엇인지 알 수 없습니다. Window.Current.ContentFrame 일 것이라고 더 이상 가정 할 수 없습니다 (많은 코드 에서처럼).
  • XAML 디자이너에서 머리글을 표시하지 않습니다.
  • 프레임 요소가 Window.Current.Content (평소와 같이)으로 설정되면 상태 표시 줄의 모양이 자동으로 보완되는 것 같습니다. 헤더가 상태 표시 줄 아래에 표시되도록 루트 눈금에 26px의 위쪽 여백을 추가해야했습니다.
  • 페이지 전환은 프레임에 의해 제공되며 헤더는 프레임 외부에 있으므로 페이지 전환에 참여하지 않습니다.

옵션 2

당신은 헤더를 표시하거나 데이터 바인딩을 통해 일부 페이지 특정 데이터에 헤더의 내용을 변경하는 일부 페이지를 제외하고 같은 더 많은 유연성을 원하는 경우에, 루트 프레임을 변경하지 말고 수동으로 원하는 페이지에 헤더를 포함시키는 것이 좋습니다. 앱이 몇 페이지에 간단한 경우


후 첫 번째 옵션은 앱이 다음 후자를 대신 할 수 있습니다 복잡하지만 경우, 아마도 가장 쉬운 방법입니다. 개인적으로 최대한의 유연성을 원하기 때문에 항상 후자의 옵션을 선택합니다.

+0

답장을 보내 주셔서 감사합니다. 두 번째 접근 방식을 결정했습니다. –

관련 문제