From 2ffc7b3e52c835d3997c567023e71f20136874ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Sun, 27 Aug 2023 16:02:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=96=E6=8B=BD=E6=94=AF=E6=8C=81=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=A0=8F=E4=BF=A1=E6=81=AF=E5=B8=A6=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttachedProperties/DragAndDropProps.cs | 10 ++++---- .../Controls/DesignerCanvas.cs | 24 +++++++++++++++++++ .../Container/ConstParameterItem.cs | 4 ++-- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/AIStudio.Wpf.DiagramDesigner/AttachedProperties/DragAndDropProps.cs b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/DragAndDropProps.cs index 526f05d..8c59fdf 100644 --- a/AIStudio.Wpf.DiagramDesigner/AttachedProperties/DragAndDropProps.cs +++ b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/DragAndDropProps.cs @@ -86,11 +86,11 @@ namespace AIStudio.Wpf.DiagramDesigner dataObject.Icon = toolBoxData.Icon; dataObject.Text = toolBoxData.Text; dataObject.ColorViewModel = toolBoxData.ColorViewModel; - //if (toolBoxData.Addition is DesignerItemViewModelBase designerItemViewModelBase) - //{ - // dataObject.DesignerItem = designerItemViewModelBase.ToSerializableItem(); - //} - //else + if (toolBoxData.Addition is DesignerItemViewModelBase designerItemViewModelBase) + { + dataObject.DesignerItem = designerItemViewModelBase.ToSerializableItem(); + } + else { dataObject.DesignerItem = toolBoxData.Addition; } diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs index eaf0582..715a65a 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs @@ -6,6 +6,7 @@ using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Resources; +using AIStudio.Wpf.DiagramDesigner.Helpers; using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.ViewModels; using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel; @@ -714,6 +715,29 @@ namespace AIStudio.Wpf.DiagramDesigner } _viewModel.AddCommand.Execute(designerItems); } + else if (dragObject.DesignerItem is SerializableItem serializableItem) + { + Type type = TypeHelper.GetType(serializableItem.ModelTypeName); + DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, _viewModel, serializableItem, ".json") as DesignerItemViewModelBase; + itemBase.Left = Math.Max(0, position.X - itemBase.GetItemWidth() / 2); + itemBase.Top = Math.Max(0, position.Y - itemBase.GetItemHeight() / 2); + if (dragObject.DesiredSize != null) + { + itemBase.ItemWidth = dragObject.DesiredSize.Value.Width; + itemBase.ItemHeight = dragObject.DesiredSize.Value.Height; + } + if (dragObject.DesiredMinSize != null) + { + itemBase.MinItemWidth = dragObject.DesiredMinSize.Value.Width; + itemBase.MinItemHeight = dragObject.DesiredMinSize.Value.Height; + } + _viewModel.AddCommand.Execute(itemBase); + + if (itemBase is BlockDesignerItemViewModel block) + { + (_viewModel as IBlockDiagramViewModel).FinishNearBlock(new System.Collections.Generic.List { block }); + } + } else { DesignerItemViewModelBase itemBase = null; diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Container/ConstParameterItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Container/ConstParameterItem.cs index dcba14d..ab2f3c7 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Container/ConstParameterItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Container/ConstParameterItem.cs @@ -24,8 +24,8 @@ namespace AIStudio.Wpf.DiagramDesigner public ConstParameterItem(ConstParameter viewmodel) { - Text = viewmodel.Text; - Value = viewmodel.Value?.ToString(); + Text = viewmodel?.Text; + Value = viewmodel?.Value?.ToString(); } } }