public ConnectorViewModel(WorkflowItemViewModel start, WorkflowItemViewModel end) { Start = start; End = end; // setze Werte X1 = Start.Left; Y1 = Start.Top; X2 = End.Left; Y2 = End.Top; // bei Property Changed Events anmelden Start.PropertyChanged += StartOnPropertyChanged; End.PropertyChanged += EndOnPropertyChanged; }
/// <summary> /// Setzt designerCanvas und workflowItemViewModel und stößt lock des aktuellen WorkflowIteman. /// Wird beim Start des Drags aufgerufen. /// </summary> /// <param name="sender">MoveThumb</param> /// <param name="e">Eventspezifische Infos</param> private void startDrag(object sender, DragStartedEventArgs e) { // hole ContentControl, das derzeit bewegt wird Control designerItem = (Control)DataContext; if (designerItem != null) { // hole Item von aktuell bewegtem ContentControl workflowItemViewModel = (WorkflowItemViewModel)designerItem.DataContext; // merke Koordinaten zu Beginn des Drags startLeft = workflowItemViewModel.Left; startTop = workflowItemViewModel.Top; // Lock workflowItem - falls Item nicht gesperrt werden kann -> designerCanvas = null try { workflowItemViewModel.LockDrag(); // finde DesignerCanvas, damit Größenberechnung neu angestoßen werden kann DependencyObject parent = VisualTreeHelper.GetParent(designerItem); while (parent != null && !(parent is DesignerCanvas)) { parent = VisualTreeHelper.GetParent(parent); } if (parent is DesignerCanvas) { designerCanvas = (DesignerCanvas)parent; } } catch (Exception) { WorkflowEditorDesignerCanvasErrorViewModel.Instance.Error = "Das Item konnte nicht gesperrt werden. Bitte noch einmal versuchen."; } } }
/// <summary> /// Läd ein Workflowitem in den contentbereich der View. /// </summary> /// <param name="item"></param> public void LoadWorkflowitem(WorkflowItemViewModel item) { ErrorMessage = string.Empty; WorkflowitemId = item.Id; WorkflowItem = item; workflowItem.LoadDetails(); workflowItem.StartEdit(); IsEnabled = true; }