Как вращать элементы в StackPanel таким же образом, как значки ApplicationBar вращаются во время изменения ориентации? - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь создать панель приложений, например набор иконок с текстом, который всегда будет располагаться вдоль физического верхнего края телефона.Итак, у меня есть панель стека (img1 text1), (img2 text2) и т. Д., Где каждая пара также находится в своей собственной панели стека с вертикальной ориентацией.При изменении ориентации я просто настраиваю горизонтальное и вертикальное выравнивание родительской панели стека и изменяю ориентацию этой панели на горизонтальную (или вертикальную в зависимости от обстоятельств).Это приводит к тому, что все в порядке ... за исключением упорядочения.

Упорядочение переходит от 1, 2, 3, 4 ... (слева направо вверху в портретном режиме) до перехода к 4, 3, 2, 1 ... идти снизу вверх в ландшафте.Т.е. элемент 1 переместился из своего физического положения (верхний левый край физического телефона) в верхний правый край телефона из-за поворота.

Поэтому я хочу, чтобы элемент 1 вращался на месте, так же, какзначки панели приложения делают.Как мне этого добиться?

Вот типичный XAML для компонента со значками:

<Grid>
      <StackPanel x:Name="mainControlPanel" 
                HorizontalAlignment="Center" VerticalAlignment="Top" Orientation="Horizontal">
        <StackPanel Orientation="Vertical" Margin="3" Tap="function1">
            <Image Source="Images/Icons/control1.png" Height="36" Width="36"/>
            <TextBlock Text="Control 1" TextAlignment="Center" FontSize="{StaticResource PhoneFontSizeSmall}" />
        </StackPanel>
        <StackPanel Orientation="Vertical" Margin="3" Tap="function2">
            <Image Source="Images/Icons/control2.png" Height="36" Width="36"/>
            <TextBlock Text="Control 2" TextAlignment="Center" FontSize="{StaticResource PhoneFontSizeSmall}" />
        </StackPanel>
        <StackPanel Orientation="Vertical" Margin="3" Tap="function3">
            <Image Source="Images/Icons/control3.png" Height="36" Width="36"/>
            <TextBlock Text="Control 3" TextAlignment="Center" FontSize="{StaticResource PhoneFontSizeSmall}" />
        </StackPanel>
   </StackPanel>
</Grid>

Я хочу, чтобы элементы управления 1, 2 и 3 оставались в том же положении относительнофизическое устройство, но просто вращайте (значок и текст), как это делают значки на панели приложения.

1 Ответ

2 голосов
/ 30 января 2012

Почему бы вам не сделать следующее (так делают большинство разработчиков)

  1. Создать книжную и альбомную компоновку в шаблоне данных
  2. Привязать содержимое страницы кDataTemplate в Page / ViewModel
  3. При изменении ориентации обновите DataTemplate DP / INotify на правильный

Вероятно, это будет самый простой вариант

РЕДАКТИРОВАТЬ

Вот удивительный пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...