void AddSomeGesturesUsingCode()
        {
            //2 options:
            //1. use the standard xamarin api. e.g. view.GestureRecgonizers.Add(yourgesturerecognizer)
            //    and then call view.ProcessGestures();
            //    this has the benefit that when Xamarin add an api hook we can remove the view.ProcessGestures call and
            //    it will all be good.
            //2. use the extension method view.AddGestureRecognizer(yourgesturerecognizer)
            //    this is easier to use; and does everything under the hood; but it's a bit more obtrusive.
            //   in all cases, until Xamarin do more to open up the api, you must use the view extension method
            //   removeGestureRecognizer
            // comment on https://bugzilla.xamarin.com/show_bug.cgi?id=30467 to get Xamarin to expand
            // IGestureRecognizer with some add/remove hooks
            var panRecognizer = new PanGestureRecognizer ();
            panRecognizer.OnAction += OnAction;
            var Box3 = new BoxView () {
                Color = Color.Olive,
            };

            MainLayout.Children.Add (Box3);
            Box3.Layout (new Rectangle (100, 400, 100, 100));
            //			Box3.AddGestureRecognizer (panRecognizer);

            var panRecognizerWith2Tocuhes = new TwinTechs.Gestures.PanGestureRecognizer ();
            panRecognizerWith2Tocuhes.OnAction += OnAction;
            panRecognizerWith2Tocuhes.MinimumNumberOfTouches = 2;
            Label2.GestureRecognizers.Add (panRecognizerWith2Tocuhes);
            Label2.ProcessGestureRecognizers ();
        }
		public PanGestureExample3 ()
		{
			InitializeComponent ();
			MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;

			OuterView = new StackLayout {
				Padding = new Thickness (50),
				BackgroundColor = Color.Yellow
			};
			this.MainLayout.Children.Add (OuterView);
			OuterView.Layout (_outerLayoutBounds);

			Box = new BoxView {
				Color = Color.Red,
				WidthRequest = 150,
				HeightRequest = 150,
			};
			OuterView.Children.Add (Box);
			var panRecognizer = new PanGestureRecognizer ();
			panRecognizer.IsConsumingTouchesInParallel = true;
			panRecognizer.OnAction += Gesture_OnAction;
			Box.AddGestureRecognizer (panRecognizer);

			Box2 = new BoxView ();
			Box2.Color = Color.Blue;
			this.MainLayout.Children.Add (Box2);
			Box2.Layout (_box2Bounds);
			panRecognizer = new PanGestureRecognizer ();
			panRecognizer.OnAction += Gesture_OnAction;
			panRecognizer.IsConsumingTouchesInParallel = true;
			Box2.AddGestureRecognizer (panRecognizer);
			DoBoxAnimation ();

		}
		public PanGestureExample2 ()
		{
			InitializeComponent ();
			MainLayout.OnLayoutChildren += MainLayout_OnLayoutChildren;
			Box = new BoxView ();
			Box.Color = Color.Red;
			this.MainLayout.Children.Add (Box);
			Box.Layout (_boxBounds);
			var panRecognizer = new PanGestureRecognizer ();
			panRecognizer.IsConsumingTouchesInParallel = true;
			panRecognizer.OnAction += Gesture_OnAction;
			Box.AddGestureRecognizer (panRecognizer);

			Box2 = new BoxView ();
			Box2.Color = Color.Blue;
			this.MainLayout.Children.Add (Box2);
			Box2.Layout (_box2Bounds);
			panRecognizer = new PanGestureRecognizer ();
			panRecognizer.OnAction += Gesture_OnAction;
			panRecognizer.IsConsumingTouchesInParallel = true;
			Box2.AddGestureRecognizer (panRecognizer);
			DoBoxAnimation ();

		}