如何在方向更改期间以与ApplicationBar图标旋转相同的方式旋转StackPanel中的元素?

时间:2012-01-12 02:48:00

标签: silverlight windows-phone-7

我正在尝试创建一个应用栏,就像带有文字的图标集一样,将始终沿着手机的物理顶部边缘定位。所以我有一个(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 个答案:

答案 0 :(得分:2)

为什么不执行以下操作(大多数开发人员以此方式完成)

  1. 在DataTemplate中创建纵向和横向布局
  2. 将页面中的内容绑定到Page / ViewModel中的DataTemplate
  3. 当Orientation更改时,将DataTemplate DP / INotify更新为正确的
  4. 这可能是最简单的选择

    修改

    Here is an awesome example