К сожалению, я не думаю, что это сработает.ItemTemplate применяется, когда элемент добавляется в ListBox.Вы можете проверить это с помощью следующего фрагмента и собственных шаблонов:
// Constructor
public MainPage()
{
InitializeComponent();
Loaded += (sender, e) =>
{
DispatcherTimer t = new DispatcherTimer();
t.Interval = TimeSpan.FromSeconds(5);
t.Tick += (sender2, e2) =>
{
MyListBox.Items.Add(this.Orientation.ToString());
};
t.Start();
};
}
Эффект интересный.В моем примере следующий вывод был записан в поле списка, когда я поворачивал эмулятор:
THIS IS THE PORTRAIT TEMPLATE: PortraitUp
THIS IS THE LANDSCAPE TEMPLATE: LandscapeLeft
THIS IS THE LANDSCAPE TEMPLATE: LandscapeRight
THIS IS THE LANDSCAPE TEMPLATE: LandscapeLeft
THIS IS THE PORTRAIT TEMPLATE: PortraitUp
Альтернативный подход, который работал для меня в прошлом, - это использование двух совершенно разных менеджеров компоновки - один оптимизированныйдля книжного макета, другой оптимизирован для ландшафта - и переключает видимость / непрозрачность каждого на основе изменений в ориентации.Я использовал эту технику в прошлом, и она обеспечивает хорошую смешиваемость и приличную производительность (если ваша страница не слишком сложна).Я все еще борюсь за «лучший» подход, но, по крайней мере, я знаю, что он работает.
/ chris