mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-05 16:56:34 +08:00
序列化bug修复,近期主要修复bug为主
This commit is contained in:
@@ -104,7 +104,7 @@ namespace AIStudio.Wpf.Mind.Controls
|
||||
_diagramViewModel.Items.Clear();
|
||||
_diagramViewModel.ToObject(json);
|
||||
|
||||
_diagramViewModel.Init();
|
||||
_diagramViewModel.Init(true);
|
||||
_diagramViewModel.IsLoading = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,20 +18,34 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
}
|
||||
public MindNodeDesignerItem(MindNode item) : base(item)
|
||||
{
|
||||
MindType = item.MindType;
|
||||
MindTheme = item.MindTheme;
|
||||
Spacing = item.Spacing;
|
||||
Offset = item.Offset;
|
||||
IsExpanded = item.IsExpanded;
|
||||
LinkInfoItem = new LinkInfoItem(item.LinkInfo);
|
||||
ImageInfoItem = new ImageInfoItem(item.ImageInfo);
|
||||
Remark = item.Remark;
|
||||
Priority= item.Priority;
|
||||
Rate=item.Rate;
|
||||
Priority= item.Priority?.ToString();
|
||||
Rate=item.Rate.ToString();
|
||||
if (item.Tags != null)
|
||||
{
|
||||
Tags = new List<string>(item.Tags);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public MindType MindType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public MindTheme MindTheme
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Size Spacing
|
||||
{
|
||||
@@ -90,18 +104,18 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string Remark
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double? Priority
|
||||
[XmlAttribute]
|
||||
public string Priority
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public double? Rate
|
||||
[XmlAttribute]
|
||||
public string Rate
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,16 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
|
||||
public class MindNodeModel : DiagramNode
|
||||
{
|
||||
public MindType MindType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public MindTheme MindTheme
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public Size Spacing
|
||||
{
|
||||
get; set;
|
||||
@@ -30,13 +40,11 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlElement]
|
||||
public LinkInfoModel LinkInfoModel
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlElement]
|
||||
public ImageInfoModel ImageInfoModel
|
||||
{
|
||||
get; set;
|
||||
@@ -57,7 +65,6 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlArray]
|
||||
public List<string> Tags
|
||||
{
|
||||
get; set;
|
||||
@@ -66,7 +73,8 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
public override DiagramItemViewModel ToNodel(IDiagramViewModel diagramViewModel)
|
||||
{
|
||||
MindNode mindNode = new MindNode(diagramViewModel);
|
||||
|
||||
mindNode.MindType = MindType;
|
||||
mindNode.MindTheme = MindTheme;
|
||||
mindNode.Spacing = Spacing;
|
||||
mindNode.Offset = Offset;
|
||||
mindNode.IsExpanded = IsExpanded;
|
||||
|
||||
@@ -24,7 +24,10 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _mindType, value);
|
||||
if (!SetProperty(ref _mindType, value))
|
||||
{
|
||||
RaisePropertyChanged(nameof(MindType));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +40,10 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _mindTheme, value);
|
||||
if (!SetProperty(ref _mindTheme, value))
|
||||
{
|
||||
RaisePropertyChanged(nameof(MindTheme));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -365,15 +371,18 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
public override void Init(bool initNew)
|
||||
{
|
||||
if (Items.Count == 0)
|
||||
if (initNew)
|
||||
{
|
||||
AddRootItem();
|
||||
if (Items.Count == 0)
|
||||
{
|
||||
AddRootItem();
|
||||
}
|
||||
}
|
||||
ResetChildren(RootItems);
|
||||
RootItems?.ForEach(p => p.UpdatedLayout());
|
||||
base.Init();
|
||||
base.Init(initNew);
|
||||
}
|
||||
|
||||
private MindNode AddRootItem()
|
||||
@@ -437,11 +446,13 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
#endregion
|
||||
|
||||
#region 属性改变
|
||||
private bool isSelecting;
|
||||
protected override void Item_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
base.Item_PropertyChanged(sender, e);
|
||||
if (e.PropertyName == "IsSelected")
|
||||
{
|
||||
isSelecting = true;
|
||||
if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs)
|
||||
{
|
||||
LinkInfo = new LinkInfo(MindSelectedItem?.LinkInfo);
|
||||
@@ -453,6 +464,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
MindTheme = MindSelectedItem.MindTheme;
|
||||
}
|
||||
}
|
||||
isSelecting = false;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
@@ -1077,6 +1089,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
#region 改变模式,主题
|
||||
private void ExecutedChangeMindTypeCommand(object obj)
|
||||
{
|
||||
if (isSelecting) return;
|
||||
|
||||
var oldMindType = MindType;
|
||||
if (obj is MindType mindType && mindType != oldMindType)
|
||||
{
|
||||
@@ -1103,6 +1117,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
private void ExecutedChangeMindThemeCommand(object obj)
|
||||
{
|
||||
if (isSelecting) return;
|
||||
|
||||
var oldmindTheme = MindTheme;
|
||||
if (obj is MindTheme mindTheme && mindTheme != oldmindTheme)
|
||||
{
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Linq;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
@@ -51,6 +53,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
var mindNodeModel = new MindNodeModel();
|
||||
|
||||
mindNodeModel.MindType = MindType;
|
||||
mindNodeModel.MindTheme = MindTheme;
|
||||
mindNodeModel.Spacing = Spacing;
|
||||
mindNodeModel.Offset = Offset;
|
||||
mindNodeModel.IsExpanded = IsExpanded;
|
||||
@@ -134,6 +138,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
if (designerbase is MindNodeDesignerItem designer)
|
||||
{
|
||||
MindType = designer.MindType;
|
||||
MindTheme = designer.MindTheme;
|
||||
Spacing = designer.Spacing;
|
||||
Offset = designer.Offset;
|
||||
IsExpanded = designer.IsExpanded;
|
||||
@@ -154,8 +160,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
ImageInfo = new ImageInfo(designer.ImageInfoItem?.Url, designer.ImageInfoItem?.Text);
|
||||
}
|
||||
Remark = designer.Remark;
|
||||
Priority = designer.Priority;
|
||||
Rate = designer.Rate;
|
||||
if (double.TryParse(designer.Priority ?? "", out var priority))
|
||||
{
|
||||
Priority = priority;
|
||||
}
|
||||
if (double.TryParse(designer.Rate ?? "", out var rate))
|
||||
{
|
||||
Rate = rate;
|
||||
}
|
||||
if (designer.Tags != null)
|
||||
{
|
||||
Tags = new ObservableCollection<string>(designer.Tags);
|
||||
@@ -456,7 +468,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
public ICommand ImportCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 菜单
|
||||
@@ -497,7 +509,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
menuItem.Text = "导出节点";
|
||||
menuItem.Command = ExportCommand;
|
||||
menuItem.CommandParameter = this;
|
||||
menuOptions.Add(menuItem);
|
||||
menuOptions.Add(menuItem);
|
||||
menuItem = new CinchMenuItem();
|
||||
menuItem.Text = "导入节点";
|
||||
menuItem.Command = ImportCommand;
|
||||
@@ -547,7 +559,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
Root?.Remove(this);
|
||||
Root?.Remove(connectors);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 属性改变
|
||||
@@ -584,7 +596,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
case nameof(NodeLevel):
|
||||
MindLayout?.Appearance(this);
|
||||
break;
|
||||
case nameof(Text):
|
||||
case nameof(Text):
|
||||
case nameof(Rate):
|
||||
case nameof(Priority):
|
||||
case nameof(Remark):
|
||||
@@ -650,7 +662,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
mindnode.Add(this);
|
||||
}
|
||||
|
||||
|
||||
if (this.Children != null)
|
||||
{
|
||||
foreach (var child in this.Children)
|
||||
@@ -727,7 +739,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
IsSelected = selected;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user