2012-12-08 27 views
9

Tôi đang cố gắng sử dụng XAML ScrollViewer để 'rẻ hơn' thêm pinch-phóng to hình ảnh. Tuy nhiên, vấn đề là khi xoay quanh hình ảnh, nó tiếp tục chụp ở bên trái. Nếu tôi trượt nó sang phải, nó có vẻ ổn, nhưng thứ hai tôi giải phóng hình ảnh, nó quay trở lại bên trái.Sử dụng ScrollViewer để chỉnh sửa hình ảnh chụm, giữ chụp ở bên trái trên pan

Sự cố này chỉ tồn tại theo chiều ngang - đối với panning dọc, nó hoạt động tốt.

Tôi đã trừu tượng hóa điều này thành trường hợp thử nghiệm đơn giản nhất và vẫn tồn tại. Mã XAML của tôi như sau:

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

Mọi trợ giúp đều được đánh giá cao.

Trả lời

14

Tôi đã giải quyết vấn đề này.

Vấn đề là bạn phải explicityl đặt HorizontalScrollBarVisibility thành true.

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

Điều này dường như phá vỡ kích thước ban đầu của hình ảnh trong ScrollViewer. Nếu không thiết lập khả năng hiển thị, ảnh sẽ co giãn để lấp đầy chiều rộng ngang của scrollviewer. Sau khi áp dụng giải pháp của bạn, ảnh hiển thị ban đầu của ảnh lớn hơn vùng chứa. –

+5

Đối với bất kỳ ai có vấn đề trên, hãy đặt chiều rộng bắt đầu của hình ảnh thành chiều rộng của chế độ xem scrollview: Image.Width = ImageScrollViewer.ViewportWidth; –

+0

Mở rộng theo lời khuyên này, bạn cần đặt Image.Width sau khi khung nhìn đã được thiết lập. Tôi đã sử dụng sự kiện LayoutUpdated cho điều đó. –

3

Chỉ minh họa các giải pháp có thể có về những gì Michal Strzalkowski đề cập trong phần bình luận bên dưới của bạn. Nhanh sửa chữa trong XAML sử dụng Binding với ElementNameĐường dẫn

<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> 
Các vấn đề liên quan