2014-11-16 9 views
0

Я пытаюсь создать общий заголовок для моего приложения Windows Phone 8.1. Заголовок должен быть общим для всех страниц. Я новичок в разработке приложений для Windows Phone. Может ли кто-нибудь предложить лучший и самый чистый способ сделать это?Общий заголовок для Windows Phone 8.1 Приложение

ответ

1

Вариант 1

Если вы планируете иметь заголовок, общий для абсолютно всех страницы без учета каких-либо, вы можете разместить свой контроль за пределами вашей рамы. Таким образом, он будет сохраняться между страницами навигации.

Сначала создайте свой заголовок как UserControl (Project -> Добавить новый элемент -> User Control). Затем в Application.OnLaunched() переопределения в App.xaml.cs (или там, где вы создаете раму), замените эту строку

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

с этим

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; 

Теперь ваш заголовок будет отображаться на всех страницах подобных к этому:

screenshot

Некоторые моменты:

  • Мне никогда не приходилось создавать такое приложение раньше, поэтому я не знаю, каковы будут последствия этого. Вы уже не можете считать, что Window.Current.Content будет Frame (как много кода).
  • Дизайнер XAML не отображает заголовок.
  • Элемент Frame автоматически компенсирует появление строки состояния, когда установлено значение Window.Current.Content (как обычно). Я должен был добавить верхний край 26px в корневую сетку, чтобы заголовок отображался под строкой состояния.
  • Переходы страницы предоставляются кадром, а поскольку заголовок находится вне кадра, он не будет участвовать в переходах страниц.

Вариант 2

Если вы хотите больше гибкости, например, за исключением некоторых страниц из отображения заголовка или изменений содержимого заголовка некоторых указания конкретных данных, посредством связывания данных, то, Я предлагаю вам не менять корневой фрейм, а вместо этого включать заголовок вручную на нужные вам страницы.


Если ваше приложение просто с несколькими страницами, то первый вариант, вероятно, самый простой, но если ваше приложение является сложным, то вы можете вместо последнего. Лично я всегда выбирал последний вариант, просто потому, что мне нужна максимальная гибкость.

+0

Спасибо за ответ. Решил пойти со вторым подходом. –

Смежные вопросы