0

私はWP7アプリに取り組んでおり、ユーザーが横向きに回転すると、アプリのヘッダー内の画像を非表示にして、ユーザーがより多くの情報を見ることができるようにしたいと考えています.

現時点では、ピボット コントロールの TitleTemplate 内に画像があります。Blend を使用して、Landscape モードのときに「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);            
    }

ハウラーが見える人はいますか?

ありがとう

4

2 に答える 2

0

私は常にこのチュートリアルに従って処理しているので、Blend 内ですべてのレイアウトを行うことができ、OrientationChanged 自体に何もコーディングする必要はありません。

于 2013-01-30T09:46:33.850 に答える
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;
     } 
}

このチュートリアルも理解に役立つ場合があります。幸運を。

于 2013-01-29T17:38:17.450 に答える