2012-12-08 6 views
9

XAML ScrollViewerを使用して画像にピンチズームを「安く」追加しようとしています。しかし、問題を回避するには、画像の周りをパニングするとき、それは一番左にスナップし続けます。私はそれを右にスライドすると、それはうまく見えますが、2番目の私はイメージを解放すると、それは左にスナップします。画像ピンチズームにScrollViewerを使用すると、パンにスナップが残ります

この問題は水平方向にしか維持されません。垂直方向のパンニングの場合、正常に動作します。

私はこれを最も簡単なテストケースに抽象化し、それはそのままです。私のXAMLコードは次のとおりです。

<ScrollViewer> 
     <Image Source="http://i.imgur.com/1WlGT.jpg" /> 
    </ScrollViewer> 

助けていただければ幸いです。

答えて

14

私はこれを解決しました。

問題は、明示的にHorizo​​ntalScrollBarVisibilityをtrueに設定する必要があることです。ミハルStrzalkowskiは(コンテナの境界でのフィッティングではない)フルサイズで示されている画像があるあなたの答え以下の彼のコメント、約言及したものの可能な解決策の

<ScrollViewer x:Name="scrollViewer" 
        VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" 
        ZoomMode="Enabled"> 
     <Image Source="http://i.imgur.com/1WlGT.jpg" /> 
    </ScrollViewer> 
+1

を使用してこれは、ScrollViewerの内の画像の初期サイズを破るようです。可視性を設定しないと、スクロールビューアの横幅を埋めるように画像が拡大/縮小されます。ソリューションを適用した後、イメージの初期表示はコンテナよりも大きくなります。 –

+5

上記の問題が発生した場合は、画像の開始幅をスクロールビュービューポートの幅に設定します。Image.Width = ImageScrollViewer.ViewportWidth; –

+0

このアドバイスを拡張すると、ビューポートが確立された後でImage.Widthを設定する必要があります。私はそのためにLayoutUpdatedイベントを使用しました。 –

3

だけのイラスト。 XAMLでのクイックフィックスバインディングとのElementNameパス

<ScrollViewer x:Name="SV_ImageZoom"   
       MaxZoomFactor="3" 
       MinZoomFactor="1" 
       ZoomMode="Enabled"       
       HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Auto"> 
    <Image Source="http://i.imgur.com/1WlGT.jpg" 
      Width="{Binding Path=ViewportWidth, ElementName=SV_ImageZoom}" /> 
</ScrollViewer> 
関連する問題