2014-07-15 5 views
3

내 Windows Phone 8.1 RT 앱에서 피벗 컨트롤 내부에 이미지가 있습니다.페이지 방향을 변경하면 XAML 요소를 전체 화면으로 표시하는 방법?

페이지 방향을 세로로 변경하면 전체 화면으로 요소를 표시하려고합니다.

도움을 주시면 감사하겠습니다.

내 XAML은 아래와 같습니다.

<Grid x:Name="ContentPanel"> 
    <Pivot Title="{Binding ItemTitle}"> 
     <PivotItem Header="Overview"> 
      <StackPanel Orientation="Vertical"> 
       <Image x:Name="MainImage" Source="{Binding ImageURL}"/> 
       <TextBlock x:Name="TitleTextBlock" Text={Binding Title}"/> 
      </StackPanel> 
     </PivotItem> 
     <PivotItem Header="Details"> 
      <ScrollViewer> 
       <TextBlock x:Name="DetailsTextBlock" Text="{Binding Details}"/> 
      </ScrollViewer> 
     </PivotItem> 
    </Pivot> 
</Grid> 

나는 페이지 방향이 가로로 변경하면 전체 화면으로 이미지 컨트롤 MainImage을 표시하고 방향을 다시 세로로 변경하면 정상 피벗로 다시 복귀하기 위해 노력하고있어.

답변

5

전체보기 영역을 포함하도록 피벗보기 내용을 전체로 확장 할 수 없습니다. 한 가지 해결책은 별도의 이미지 컨트롤을 사용하여 숨기고 방향 변경시이 이미지를 표시하고 세로보기 용 그리드 선을 숨 깁니다. 여기

귀하의 페이지 XAML

<Grid Name="MainPage"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="OrientationManager"> 
      <VisualState x:Name="Portrate"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ContentPanel"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="MainImage1"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
      <VisualState x:Name="Landscape"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ContentPanel"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="MainImage1"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

    <Grid x:Name="ContentPanel"> 
     <Pivot Title="{Binding ItemTitle}"> 
      <PivotItem Header="Overview"> 
       <StackPanel Orientation="Vertical"> 
        <Image x:Name="MainImage" Source="{Binding ImageURL}"/> 
        <TextBlock x:Name="TitleTextBlock" Text="asfsadf"/> 
     </StackPanel> 
      </PivotItem> 
      <PivotItem Header="Details"> 
       <ScrollViewer> 
        <TextBlock x:Name="DetailsTextBlock" Text="{Binding Details}"/> 
       </ScrollViewer> 
      </PivotItem> 
     </Pivot> 
    </Grid> 
    <Image Source="Assets\WideLogo.scale-14012.png" Visibility="Collapsed" Name="MainImage1"></Image> 
</Grid> 

VisualStateManager 요소는 루트 제어에 있는지 확인하는 방법입니다/페이지 생성자의 페이지

코드의 그리드.

DisplayInformation di = DisplayInformation.GetForCurrentView(); 
     di.OrientationChanged += di_OrientationChanged; 

     if (di.CurrentOrientation == DisplayOrientations.Landscape || di.CurrentOrientation == DisplayOrientations.LandscapeFlipped) 
     { 
      VisualStateManager.GoToState(this, "Landscape", true); 
     } 
     else 
     { 
      VisualStateManager.GoToState(this, "Portrate", true); 

     } 

동향 이벤트 핸들러

을 변경
void di_OrientationChanged(DisplayInformation sender, object args) 
    { 
     if (sender.CurrentOrientation == DisplayOrientations.Landscape || sender.CurrentOrientation == DisplayOrientations.LandscapeFlipped) 
     { 
      VisualStateManager.GoToState(this, "Landscape", true); 
     } 
     else 
     { 
      VisualStateManager.GoToState(this, "Portrate", true); 

     } 
    } 

편집 :

<Grid Name="MainPage"> 
     <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="OrientationManager"> 
      <VisualState x:Name="Portrate"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PivotHeaderText1"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PivotHeaderText2"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 

      </VisualState> 
      <VisualState x:Name="Landscape"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PivotHeaderText1"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="PivotHeaderText2"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 

    <Grid x:Name="ContentPanel"> 
     <Pivot Title="{Binding ItemTitle}"> 
      <PivotItem> 
       <PivotItem.Header> 
        <TextBlock Text="Overview" x:Name="PivotHeaderText1" ></TextBlock> 
       </PivotItem.Header> 
       <StackPanel Orientation="Vertical"> 
        <MediaElement AutoPlay="True" x:Name="player" /> 
        <TextBlock x:Name="TitleTextBlock" Text="asfsadf"/> 
       </StackPanel> 
      </PivotItem> 
      <PivotItem> 
       <PivotItem.Header> 
        <TextBlock Text="Overview" x:Name="PivotHeaderText2" ></TextBlock> 
       </PivotItem.Header> 
       <ScrollViewer> 
        <TextBlock x:Name="DetailsTextBlock" Text="{Binding Details}"/> 
       </ScrollViewer> 
      </PivotItem> 
     </Pivot> 
    </Grid> 
</Grid> 

그것이 도움이되기를 바랍니다.

+0

답변 주셔서 감사합니다.하지만 동일한 요소로 해결할 수있는 방법이 있습니까? 예를 들어 이미지 대신 Media Player 컨트롤이있을 수 있습니다. 그래서 저는 두 개의 다른 미디어 플레이어가 동시에 실행되고 메모리를 먹고 싶지 않을 것입니다. –

+0

답장의 편집 부분을 보는 것보다. :) –

+0

페이지 변경 xaml –

관련 문제