protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.View> e) { base.OnElementChanged(e); if (e.OldElement != null) { LongClick -= HandleLongClick; } if (e.NewElement != null) { LongClick += HandleLongClick; DraggableView dragView = Element as DraggableView; dragView.RestorePositionCommand = new Command(() => { SetX(originalX); SetY(originalY); //if (!firstTime) //{ // SetX(originalX); // SetY(originalY); //} }); } }
public MindMapPage() { this.ViewModel = new MindMapViewModel(); this.BindingContext = this.ViewModel; InitializeComponent(); dndLayout.DoubleTapped += (object sender, EventArgs e) => { TappedEventArgs evnt = e as TappedEventArgs; Point tappedLocation = (Point)evnt.Parameter; MindMapEntity mapEntity = new MindMapEntity { Title = $"MindMap{tappedLocation.X}{tappedLocation.Y}" }; MindMapView mindMapView = new MindMapView(mapEntity); DraggableView mindMapDrag = new DraggableView { Content = mindMapView }; TapGestureRecognizer tapGesture = new TapGestureRecognizer(); tapGesture.Tapped += (sender1, e1) => { this.ViewModel.CurrentMindMapEntity = (sender1 as MindMapView).MapEntity; }; mindMapView.GestureRecognizers.Add(tapGesture); this.dndLayout.Children.Add( mindMapDrag, tappedLocation ); }; }
private void HandleLongClick(object sender, LongClickEventArgs e) { DraggableView dragView = Element as DraggableView; if (firstTime) { originalX = GetX(); originalY = GetY(); firstTime = false; } dragView.DragStarted(); touchedDown = true; }
private void dragView_DragEnd(object sender, EventArgs e) { DraggableView view = (DraggableView)sender; string Guid = view.ClassId; if (view.DragDirection == DragDirectionType.Horizontal & view.DragMode == DragMode.Touch) { if (AppConstants.GetSwipe(Guid, view.DragValue)) { current_context.OnQuoteCommand.Execute(Guid); } } }
private void dragView_DragEnd(object sender, EventArgs e) { DraggableView view = (DraggableView)sender; string chatID = view.ClassId; if (view.DragDirection == DragDirectionType.Horizontal & view.DragMode == DragMode.Touch) { if (this.Parent.Parent.Parent.BindingContext is ChatPageViewModel parent_page_model) { //DependencyService.Get<IMessage>().ShortAlert($"Outgoing: {view.DragValue}"); if (AppConstants.GetSwipe(chatID, view.DragValue)) { parent_page_model.OnQuoteCommand.Execute(chatID); (this.Parent.Parent.Parent as ChatPage).FocusCommand.Execute(null); } } } }
public EntityViewPage() { InitializeComponent(); TestEntity = new Entity { Name = "Test", Properties = new PropertyEntity[] { new PropertyEntity { Name = "Name", Type = typeof(string) }, new PropertyEntity { Name = "Color", Type = typeof(Color) }, new PropertyEntity { Name = "Count", Type = typeof(int) } }, Methods = new MethodEntity[] { new MethodEntity { Name = "AddToCount", Params = new PropertyEntity[] { new PropertyEntity { Name = "toAdd", Type = typeof(int) } } } } }; EntityView entityView = new EntityView(); entityView.BindingContext = TestEntity; DraggableView draggableView = new DraggableView() { Content = entityView, DragMode = DragMode.Touch, DragDirection = DragDirectionType.All }; stackLayout.Children.Add(draggableView); }
private void DevicesList_ItemTapped(object sender, ItemTappedEventArgs e) { var device = (DeviceModel)e.Item; if (ParentLayoutGrid.Children.Count > 0) { var lastUnplacedDevice = ParentLayoutGrid.Children.Where(d => d.GetType() == typeof(DraggableView)) .FirstOrDefault(c => ((c as DraggableView).BindingContext as DeviceModel).IsPlaced == false); if (lastUnplacedDevice != null) { lastUnplacedDevice.BindingContext = device; } else { var dragView = new DraggableView { BindingContext = device }; dragView.DragEnd += DragView_DragEnd; ParentLayoutGrid.Children.Add(dragView, 1, 0); } } }
public override bool OnTouchEvent(MotionEvent e) { float x = e.RawX; float y = e.RawY; DraggableView dragView = Element as DraggableView; switch (e.Action) { case MotionEventActions.Down: if (dragView.DragMode == DragMode.Touch) { if (!touchedDown) { if (firstTime) { originalX = GetX(); originalY = GetY(); firstTime = false; } dragView.DragStarted(); } touchedDown = true; } dX = x - this.GetX(); dY = y - this.GetY(); break; case MotionEventActions.Move: bool dragged = false; double dragvalue = 0; if (touchedDown) { //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Horizontal) if (dragView.DragDirection == DragDirectionType.Horizontal) { float diff = x - dX; if (diff <= 0) { SetX(originalX); } else { SetX(diff); if (diff > 50) { dragged = true; } } dragvalue = diff; } //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Vertical) //{ // SetY(y - dY); //} } dragView.DragEnded(dragged, dragvalue); break; case MotionEventActions.Up: touchedDown = false; //dragView.DragEnded(false, 0); break; case MotionEventActions.Cancel: touchedDown = false; break; } return(base.OnTouchEvent(e)); }
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { DraggableView dragView = Element as DraggableView; base.OnElementPropertyChanged(sender, e); }
private void XamlDraggableView_OnTouched(object sender, OnTouchedEventArgs e) { LastDraggedDV = e.View; }
public OnTouchedEventArgs(DraggableView v) { View = v; }