序列化bug修复,近期主要修复bug为主

This commit is contained in:
艾竹
2023-04-02 22:59:22 +08:00
parent 7835b422ff
commit a3fbb2d8ad
14 changed files with 158 additions and 68 deletions

View File

@@ -25,8 +25,14 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
{
public partial class PageViewModel : BindableBase
{
protected IDiagramServiceProvider _service { get { return DiagramServicesProvider.Instance.Provider; } }
protected IDiagramServiceProvider _service
{
get
{
return DiagramServicesProvider.Instance.Provider;
}
}
public PageViewModel(string title, string status, DiagramType diagramType)
{
Title = title;
@@ -53,18 +59,21 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
}
protected virtual void Init()
protected virtual void Init(bool initNew)
{
DiagramViewModels = new ObservableCollection<IDiagramViewModel>()
{
GetDiagramViewModel("页-1", DiagramType),
GetDiagramViewModel("页-1", DiagramType,initNew),
};
DiagramViewModel = DiagramViewModels.FirstOrDefault();
InitDiagramViewModel();
}
public string FileName { get; set; }
public string FileName
{
get; set;
}
#region
@@ -113,7 +122,10 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
}
}
public DiagramType DiagramType { get; set; }
public DiagramType DiagramType
{
get; set;
}
private ObservableCollection<IDiagramViewModel> _diagramViewModels;
public ObservableCollection<IDiagramViewModel> DiagramViewModels
@@ -239,7 +251,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
List<DiagramViewModel> viewModels = new List<DiagramViewModel>();
foreach (var diagramItem in diagramDocument.DiagramItems)
{
var viewModel = GetDiagramViewModel(diagramItem.Name, diagramItem.DiagramType);
var viewModel = GetDiagramViewModel(diagramItem.Name, diagramItem.DiagramType, false);
viewModel.ShowGrid = diagramItem.ShowGrid;
viewModel.PhysicalGridCellSize = diagramItem.PhysicalGridCellSize;
viewModel.CellHorizontalAlignment = diagramItem.CellHorizontalAlignment;
@@ -255,7 +267,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
{
Type type = TypeHelper.GetType(diagramItemData.ModelTypeName);
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, viewModel, diagramItemData, ext) as DesignerItemViewModelBase;
viewModel.Items.Add(itemBase);
viewModel.Items.Add(itemBase);
}
foreach (var connection in diagramItem.Connections)
@@ -312,7 +324,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
foreach (var viewModel in DiagramViewModels)
{
DiagramItem diagramItem = new DiagramItem(viewModel);
DiagramItem diagramItem = new DiagramItem(viewModel);
var selectedDesignerItems = viewModel.Items.OfType<DesignerItemViewModelBase>();
var selectedConnections = viewModel.Items.OfType<ConnectionViewModel>();
@@ -335,7 +347,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
Status = "";
return true;
}
}
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
{
@@ -405,7 +417,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
}
quickThemeViewModel.QuickTheme = null;
}
}
}
public void LockAction(LockObject lockObject, string propertyName)
{
@@ -426,15 +438,15 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
{
index = DiagramViewModels.Count;
}
var page = GetDiagramViewModel(null, DiagramType);
var page = GetDiagramViewModel(null, DiagramType, true);
DiagramViewModels.Insert(index, page);
DiagramViewModel = page;
InitDiagramViewModel();
}
protected virtual DiagramViewModel GetDiagramViewModel(string name, DiagramType diagramType)
protected virtual DiagramViewModel GetDiagramViewModel(string name, DiagramType diagramType, bool initNew)
{
return new DiagramViewModel() { Name = name??NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType };
return new DiagramViewModel() { Name = name ?? NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"), DiagramType = diagramType };
}
public void AddCopyPageExecuted(object para)
@@ -468,7 +480,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName);
DesignerItemViewModelBase sourceItem = DiagramViewModelHelper.GetConnectorDataItem(viewModel.Items, connectionItem.SourceId, connectionItem.SourceType);
ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation;
FullyCreatedConnectorInfo sourceConnectorInfo = sourceItem.GetFullConnectorInfo(connectionItem.Id,sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint, connectionItem.SourceIsPortless);
FullyCreatedConnectorInfo sourceConnectorInfo = sourceItem.GetFullConnectorInfo(connectionItem.Id, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint, connectionItem.SourceIsPortless);
DesignerItemViewModelBase sinkItem = DiagramViewModelHelper.GetConnectorDataItem(viewModel.Items, connectionItem.SinkId, connectionItem.SinkType);
ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation;
@@ -578,7 +590,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void AddBarcodeExecuted(object para)
{
BarcodeDesignerItemViewModel itemBase = new BarcodeDesignerItemViewModel() { Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), para.ToString()), Text="AIStudio.Wpf.DiagramApp" };
BarcodeDesignerItemViewModel itemBase = new BarcodeDesignerItemViewModel() { Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), para.ToString()), Text = "AIStudio.Wpf.DiagramApp" };
DiagramViewModel?.AddItemCommand.Execute(itemBase);
if (itemBase.Root != null)
{
@@ -586,7 +598,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
}
}
#endregion
private Size MeasureString(OutLineTextDesignerItemViewModel itemBase)
{
var formattedText = new FormattedText(