2017-02-28 8 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-ishorizo​​ntalrailenabled-false-or-scrollviewer-ishorizo​​ntalrailena –

+0

この記事を参照してください:ここで

が更新XAMLです同様の問題は、与えられた答えは緩やかに関連しています:( – Karalix

答えて

1

編集:Justin XLがコメントに記載されているように、この方法はListViewのUI仮想化を破っているため避けるべきです。詳細については、彼のコメントを参照してください

私は自分自身で答えを見つけました。なぜ私はそれが動作するためにそれをしなければならなかったが、OKを完全に理解していない。なぜ私がプロパティの使用法を複製しなければならなかったかについての説明があれば、私はそれを感謝するでしょう:)

ListView要素にScrollViewer.IsVerticalRailEnabled="False"を追加するだけです。

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

うれしかったです! :) –

関連する問題