如何在WP7 Pivot TitleTemplate内部制作图像不可见?

时间:2013-01-28 21:25:17

标签: windows-phone-7 pivot visibility itemtemplate

我正在使用WP7应用程序,当用户转到横向时,我想在应用程序的标题中隐藏图像,以便用户可以看到更多信息。

目前,我将图像放在Pivot控件的TitleTemplate中。使用Blend我添加了一个名为“Land”的VisualState,当它处于横向模式时,我隐藏了图像。这在Blend中看起来很好。当我通过Visual Studio运行它时,图像永远不会消失!

我的XAML和相关的c#如下。使用我发现的示例,我根据Orientation值的前4个字符派生要使用的VisualState的名称。

 <controls:Pivot.TitleTemplate>
            <DataTemplate>
                <Image x:Name="headerImage" Visibility="Visible"  Source="{StaticResource headerLogo}"  Height="55" HorizontalAlignment="Left" >
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="VisualStateGroup">
                            <VisualState x:Name="Land">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="headerImage">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Collapsed</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Port"/>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                </Image>   
            </DataTemplate>
        </controls:Pivot.TitleTemplate>

相关的C# - 我已经进入调试器(因此它被击中)

    private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
    {
        VisualStateManager.GoToState(this, e.Orientation.ToString().Substring(0,4), false);            
    }

任何人都可以看到任何咆哮声吗?

感谢

2 个答案:

答案 0 :(得分:0)

private void PhoneApplicationPage_OrientationChanged( object sender,  
  OrientationChangedEventArgs e) 
{ 
  PageOrientation orientation = e.Orientation; 

    if ((orientation & PageOrientation.Landscape) == PageOrientation.Landscape) 
    { 
        headerImage.Visibility = Visibility.Collapsed;

        //Set height of grid to auto
     } 
     else if ((orientation & PageOrientation.Portrait)== PageOrientation.Portrait) 
     { 
        headerImage.Visibility = Visibility.Visible;
     } 
}

This教程也可以帮助您理解。祝好运。

答案 1 :(得分:0)

我一直跟着this tutorial来处理它,所以你可以在Blend中做所有的布局,而不需要在OrientationChanged本身编写任何代码。