mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-05-03 22:41:30 +08:00
反序列化构造函数
This commit is contained in:
@@ -12,6 +12,7 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
|||||||
using AIStudio.Wpf.DiagramDesigner.Helpers;
|
using AIStudio.Wpf.DiagramDesigner.Helpers;
|
||||||
using AIStudio.Wpf.DiagramDesigner.Models;
|
using AIStudio.Wpf.DiagramDesigner.Models;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using static System.Net.Mime.MediaTypeNames;
|
||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
@@ -813,6 +814,38 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
BuildMenuOptions();
|
BuildMenuOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DiagramViewModel(DiagramItem diagramItem, string ext) : this()
|
||||||
|
{
|
||||||
|
Init(diagramItem);
|
||||||
|
|
||||||
|
foreach (var diagramItemData in diagramItem.DesignerItems)
|
||||||
|
{
|
||||||
|
Type type = TypeHelper.GetType(diagramItemData.ModelTypeName);
|
||||||
|
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData, ext) as DesignerItemViewModelBase;
|
||||||
|
Items.Add(itemBase);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var connection in diagramItem.Connections)
|
||||||
|
{
|
||||||
|
Type type = TypeHelper.GetType(connection.SerializableTypeName);
|
||||||
|
var connectionItem = SerializeHelper.DeserializeObject(type, connection.SerializableString, ext) as ConnectionItem;
|
||||||
|
|
||||||
|
connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName);
|
||||||
|
connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName);
|
||||||
|
DesignerItemViewModelBase sourceItem = DiagramViewModelHelper.GetConnectorDataItem(Items, connectionItem.SourceId, connectionItem.SourceType);
|
||||||
|
ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation;
|
||||||
|
FullyCreatedConnectorInfo sourceConnectorInfo = sourceItem.GetFullConnectorInfo(connectionItem.Id, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint, connectionItem.SourceInnerPoint);
|
||||||
|
|
||||||
|
DesignerItemViewModelBase sinkItem = DiagramViewModelHelper.GetConnectorDataItem(Items, connectionItem.SinkId, connectionItem.SinkType);
|
||||||
|
ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation;
|
||||||
|
FullyCreatedConnectorInfo sinkConnectorInfo = sinkItem.GetFullConnectorInfo(connectionItem.Id, sinkConnectorOrientation, connectionItem.SinkXRatio, connectionItem.SinkYRatio, connectionItem.SinkInnerPoint, connectionItem.SinkInnerPoint);
|
||||||
|
|
||||||
|
ConnectionViewModel connectionVM = new ConnectionViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
|
||||||
|
connectionVM.Id = Guid.NewGuid();
|
||||||
|
Items.Add(connectionVM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Init(DiagramItem diagramItem)
|
public void Init(DiagramItem diagramItem)
|
||||||
{
|
{
|
||||||
DiagramType = diagramItem.DiagramType;
|
DiagramType = diagramItem.DiagramType;
|
||||||
|
|||||||
Reference in New Issue
Block a user