我正在使用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);
}
任何人都可以看到任何咆哮声吗?
感谢
答案 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本身编写任何代码。