2016-09-29 4 views
0

이전에 작동하는 응용 프로그램을 업데이트하고 있습니다. 테스트를 수행하면 ScrollViewer가 줌이 포함 된 이미지의 일부를 화면 밖으로 떨어 뜨리면 이상하게 작동합니다. 원래 응용 프로그램은 Universal Windows 응용 프로그램으로 VS 2013으로 만들어졌습니다. 새로운 응용 프로그램은 대상 빌드가 기념일 출시로 변경되었지만 유니버설 Windows 응용 프로그램으로 VS 2015로 만들어졌습니다.ScrollViewer 스크롤바가 나타나지 않습니다.

내 XAML은 이렇게 정의된다 :

<ScrollViewer x:Name="SV1" Grid.Row="1" HorizontalScrollBarVisibility="Auto" 
     VerticalScrollBarVisibility="Auto" 
     SizeChanged="SV1_SizeChanged" ZoomMode="Enabled" >    
    <StackPanel x:Name="ImagePanel" Orientation="Horizontal" HorizontalAlignment="Center" 
      VerticalAlignment="Top" > 
     <Image x:Name="ImageLeft" Stretch="Uniform" /> 
     <Image x:Name="ImageRight" Stretch="Uniform" /> 
    </StackPanel> 
</ScrollViewer> 

사용자는에서 ScrollViewer의 개의 zoomLevel을 변경할 수 있습니다. 줌 변경은 SV1.ChangeView (null, null, zoomFactor)를 사용하여 구현됩니다.

이미지의 화면 크기가 눈에 띄게 바뀌지 만 오른쪽 또는 아래로 떨어지면 스크롤 막대가 나타나지 않습니다. 표시 여부 속성을 "자동"대신 "표시"로 변경해도 스크롤 막대가 나타나지 않습니다. 크기가 바뀌고 짧은 순간에 바가 있어야하고 사라지는 줄이 나타납니다. 또한 일반적으로 마우스 휠을 움직이는 것처럼 스크롤하는 사용자 입력은 아무 것도하지 않습니다.

다른 주석에 따라 StackPanel을 눈에 띄는 효과가없는 Grid로 교체해 보았습니다.

나는 그림을 그렸습니다. 어떤 아이디어?

+0

일반적인 이유는 ScrollViewer가 콘텐츠를 수용하도록 확장되기 때문입니다. 그것을 포함하는 그리드에서 VerticalAlignment = "Stretch"를 설정해보십시오.하지만 이것은 전체 컨텍스트에 의존하여 윈도우에 의존 할 것입니다. 이 물건은 나를 위해 XAML의 매우 고통스러운 부분입니다. –

답변

0

대답은 XAML에서 Visibility = "Collapsed"로 설정해야하는 동일한 시각적 공간을 공유하는 다음 컨트롤입니다. 표시 여부는 프로그래밍 방식으로 제어되지만 XAML 태그가 없으면 이전 컨트롤의 스크롤 막대가 표시되지 않고 태그가 포함됩니다.

관련 문제