Create a class called PinchZomBehavior.cs and add the following code.
public class PinchZomBehavior : Behavior<Image> { private double _totalImageScale = 1d; private Point _imagePosition = new Point(0, 0); private const double MaxImageZoom = 5; private Point _oldFinger1; private Point _oldFinger2; private double _oldScaleFactor; private Image _imgZoom; protected override void OnAttached() { _imgZoom = AssociatedObject; _imgZoom.RenderTransform = new CompositeTransform { ScaleX = 1, ScaleY = 1, TranslateX = 0, TranslateY = 0 }; var listener = GestureService.GetGestureListener(AssociatedObject); listener.PinchStarted += OnPinchStarted; listener.PinchDelta += OnPinchDelta; listener.DragDelta += OnDragDelta; listener.DoubleTap += OnDoubleTap; base.OnAttached(); } #region Pinch and Zoom Logic #region Event handlers
And attach behavior to image management like this
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" <Image Stretch="Uniform" Source="{Binding Image}" CacheMode="BitmapCache"> <i:Interaction.Behaviors> <Behaviors:PinchZomBehavior/> </i:Interaction.Behaviors> </Image>
source share