2010-12-30 5 views
2

WP7 앱에 다음과 같은 Pivot 컨트롤이 있습니다.사용 가능한 UI 공간의 크기를 픽셀 단위로 가져옵니다.

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <!--Pivot Control--> 
    <controls:Pivot Title="foo" > 
     <controls:PivotItem Header="Item1"> 
      <Grid> 
       <Image x:Name="imgItem1" Source="{Binding Path=Item1ImageUri}" Stretch="None" /> 
      </Grid> 
     </controls:PivotItem> 

     <!-- ... more PivotItems --> 

    </controls:Pivot> 
</Grid> 

imgItem1 이미지가 페이지의 사용 가능한 공간을 채우고 싶습니다. 내 코드에서는 웹 서비스에서 이미지를 요청하는 OnNavigatedTo 메서드를 재정의했습니다. URI의 크기 매개 변수를 웹 서비스에 제공 할 수 있습니다. 이미지의 사용 가능한 크기를 픽셀 단위로 찾고 해당 값을 웹 서비스에 보내고 싶습니다.

나는 (int)imgItem1.ActualHeight(int)imgItem1.ActualWidth이 좋을 것이라고 생각했지만, 이미지가 할당 될 때까지 0이며 이미지의 높이와 너비입니다.

로드 할 이미지의 최대/사용 가능한 크기는 어떻게 찾습니까?

+0

이미지에서 Stretch = "None"을 제거하려고 했습니까? 그냥 추측하면 ... – Anvaka

+0

@Anvaka, 아무것도 바뀌지 않습니다. –

답변

1

이 시도 : -

<Grid> 
    <Rectangle x:Name="rectangleMeasure" Fill="Transparent" /> 
    <Image x:Name="imgItem1" Source="{Binding Path=Item1ImageUri}" Stretch="None" /> 
</Grid> 

는 URL에 포함 크기 값을 결정하기 위해 사각형의의 ActualHeight 및 ActualWidth를 사용합니다.

+0

좋은 해킹인데, OnNavigatedTo 대신에 페이지 Load 이벤트에 넣기 만하면됩니다. –

0

로드 된 이벤트에서 ActualHeight 및 ActualWidth 페이지를 참조 할 수도 있습니다.

예컨대

 private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { 
      System.Diagnostics.Debug.WriteLine(this.ActualHeight); 
     } 

SystemTray가 활성화되어 있으면 두 방식 중 하나가 800보다 768이됩니다.

+0

이 이미지를 둘러싼 피벗 컨트롤을 고려하지 않습니다. –

+0

그 밖에 무엇을 가지고 있는지 잘 모르겠지만, 기본 피벗 (Pivot) 앱에서 이것을 시도한 결과 위와 같은 결과를 얻었습니다. 당신이 일하는 해결책이 있다면 논증 할 여지없이, 그것은 당신에게 큰 문제가 아닙니다. 단지 호기심입니다. –

+0

'this.ActualHeight = 696.0'과'rectangleMeasure.ActualHeight = 551.0','Pivot' 컨트롤은'PivotItem' 주위에 약간의 헤더 텍스트와 간격을 가지고 있습니다. –

관련 문제