2017-02-28 3 views
2

Scrollviewer이 영화 포스터 ListView을 래핑하고 있으며, 세로 및 가로로 스크롤 할 수 있으며 확대/축소도 가능합니다.UWP IsVerticalRailEnabled가 작동하지 않습니다.

IsHorizontalRailEnabled="False"Scrollviewer으로 설정하면 수평 레일이 효과적으로 비활성화되지만, 내가 IsVerticalRailEnabled에 할당 한 값에 관계없이 레일은 절대 비활성화되지 않습니다.

<ScrollViewer ZoomMode="Enabled" 
       MinZoomFactor="0.1" 
       MaxZoomFactor="1" 
       VerticalScrollBarVisibility="Auto" 
       HorizontalScrollBarVisibility="Auto" 
       IsVerticalRailEnabled="False" 
       IsHorizontalRailEnabled="False"> 
    <ListView Grid.Row="0" 
          Name="MovieListView" 
          ItemTemplate="{StaticResource ItemTemplate}" 
          ItemsSource="{Binding movie_posters_list}"> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <ItemsWrapGrid MaximumRowsOrColumns="15" Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
    </ListView> 
</ScrollViewer> 

이 이상한 동작에 대한 도움이되는 설명서는 어디에서 찾을 수 있습니까?

+0

것은이 게시물 http://stackoverflow.com/questions/31358080/scrollviewer-ishorizontalrailenabled-false-or-scrollviewer-ishorizontalrailena –

+0

를 참조하십시오 여기에

업데이트 된 XAML입니다 비슷한 문제는 대답은 느슨하게 관련되어 있습니다 : ( – Karalix

답변

1

편집 : Justin XL이 주석에서 언급했듯이이 방법은 ListView의 UI 가상화를 위반하는 것이므로 피해야합니다. 자세한 내용은 그의 의견을 참조하십시오

나는 직접 답변을 찾았습니다. 나는 그것이 그것을 위해 일해야만하는 이유를 충분히 이해하지 못했지만 OK. 왜 재산 사용을 복제해야하는지에 대한 설명이 있다면 감사하겠습니다 :)

ScrollViewer.IsVerticalRailEnabled="False"ListView 요소에 추가하면됩니다.

ScrollViewer에 대해서도 IsVerticalRailEnabled="False"을 유지해야합니다. 포스트가 보여 보인다 반면

<ScrollViewer ZoomMode="Enabled" 
       MinZoomFactor="0.1" 
       MaxZoomFactor="1" 
       VerticalScrollBarVisibility="Auto" 
       HorizontalScrollBarVisibility="Auto" 
       IsVerticalRailEnabled="False" 
       IsHorizontalRailEnabled="False"> 
    <ListView Name="MovieListView" 
       ItemTemplate="{StaticResource ItemTemplate}" 
       ItemsSource="{Binding movie_posters_list}" 
       ScrollViewer.IsVerticalRailEnabled="False"> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <ItemsWrapGrid MaximumRowsOrColumns="15" Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
    </ListView> 
</ScrollViewer> 
+1

'ListView' 컨트롤은 이미'ControlTemplate' 내에'ScrollViewer'를 내장하고 있습니다. 다른 컨트롤로 래핑하는 것보다 내부 컨트롤 인'ControlTemplate'을 조작해야합니다. 대신에'ScrollViewer' 빌트인이있는'GridView'를 사용하고 있습니다. 현재 구현은 컨트롤의 기본 UI 가상화 동작을 깨뜨립니다. –

+0

귀하의 제안에 감사드립니다 @ JustinXL 내가 그들을 적용, 매력처럼 작동합니다! – Karalix

+0

도움이 되니 기쁩니다! :) –

관련 문제