mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-20 00:16:36 +08:00
可以切换MindType
This commit is contained in:
@@ -25,16 +25,13 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
public class MindNode : DiagramItemViewModel
|
||||
{
|
||||
public MindNode(NodeLevel nodeLevel, MindType mindType = MindType.Mind) : this(null, nodeLevel, mindType)
|
||||
public MindNode() : this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public MindNode(IDiagramViewModel root, NodeLevel nodeLevel, MindType mindType = MindType.Mind) : base(root)
|
||||
public MindNode(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
NodeLevel = nodeLevel;
|
||||
MindType = mindType;
|
||||
|
||||
InitLayout(true);
|
||||
}
|
||||
|
||||
public MindNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
@@ -67,7 +64,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
BuildMenuOptions();
|
||||
}
|
||||
|
||||
protected void InitLayout(bool initAppearance)
|
||||
public void InitLayout(bool initAppearance)
|
||||
{
|
||||
var layout = GlobalType.AllTypes.Where(p => typeof(IMindLayout).IsAssignableFrom(p)).FirstOrDefault(p => p.Name == MindType.ToString() + "Layout");
|
||||
MindLayout = layout != null ? (System.Activator.CreateInstance(layout) as IMindLayout) : new MindLayout();
|
||||
@@ -76,6 +73,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
MindLayout.Appearance(this);
|
||||
}
|
||||
this.PropertyChanged -= this.Item_PropertyChanged;
|
||||
this.PropertyChanged += this.Item_PropertyChanged;
|
||||
}
|
||||
|
||||
@@ -85,8 +83,6 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
if (designerbase is MindNodeDesignerItem designer)
|
||||
{
|
||||
NodeLevel = designer.NodeLevel;
|
||||
MindType = designer.MindType;
|
||||
Spacing = designer.Spacing;
|
||||
Offset = designer.Offset;
|
||||
IsExpanded = designer.IsExpanded;
|
||||
@@ -97,8 +93,6 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
var mindNodeModel = new MindNodeModel();
|
||||
|
||||
mindNodeModel.NodeLevel = NodeLevel;
|
||||
mindNodeModel.MindType = MindType;
|
||||
mindNodeModel.Spacing = Spacing;
|
||||
mindNodeModel.Offset = Offset;
|
||||
mindNodeModel.IsExpanded = IsExpanded;
|
||||
@@ -111,7 +105,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
if (Command_Enable(obj) == false) return false;
|
||||
|
||||
return NodeLevel != NodeLevel.Level1;
|
||||
return NodeLevel != 0;
|
||||
}
|
||||
|
||||
#region 属性
|
||||
@@ -119,53 +113,36 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
[Browsable(false)]
|
||||
private NodeLevel _nodeLevel;
|
||||
public NodeLevel NodeLevel
|
||||
|
||||
public MindNode ParentNode
|
||||
{
|
||||
get
|
||||
{
|
||||
return _nodeLevel;
|
||||
return Parent as MindNode;
|
||||
}
|
||||
set
|
||||
|
||||
}
|
||||
|
||||
public int NodeLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
SetProperty(ref _nodeLevel, value);
|
||||
if (ParentNode == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ParentNode.NodeLevel + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
//public MindNode ParentNode
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return Parent as MindNode;
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
//public int NodeLevel
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (ParentNode == null)
|
||||
// {
|
||||
// return 0;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return ParentNode.NodeLevel + 1;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
private MindType _mindType;
|
||||
public MindType MindType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _mindType;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _mindType, value);
|
||||
return (Root as IMindDiagramViewModel)?.MindType ?? MindType.Mind;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,14 +372,6 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
#region 操作
|
||||
public void AddChild(MindNode item, int index = -1)
|
||||
{
|
||||
if (this.NodeLevel == NodeLevel.Level1)
|
||||
{
|
||||
item.NodeLevel = NodeLevel.Level2;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.NodeLevel = NodeLevel.Level3;
|
||||
}
|
||||
if (index >= 0)
|
||||
{
|
||||
this.Children.Insert(index, item);
|
||||
@@ -412,7 +381,9 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
this.Children.Add(item);
|
||||
}
|
||||
item.Parent = this;
|
||||
ConnectionViewModel connector = MindLayout?.GetConnectionViewModel(this, item);
|
||||
item.InitLayout(true);
|
||||
|
||||
ConnectionViewModel connector = MindLayout?.GetOrSetConnectionViewModel(this, item);
|
||||
Root?.DirectAddItemCommand.Execute(new SelectableDesignerItemViewModelBase[] { item, connector });
|
||||
connector.ZIndex = -1;
|
||||
this.IsSelected = true;
|
||||
@@ -440,6 +411,15 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void InitConnectLayout()
|
||||
{
|
||||
var connector = Root?.Items.OfType<ConnectionViewModel>().Where(p => p.IsFullConnection).FirstOrDefault(p => p.SinkConnectorInfoFully.DataItem == this);
|
||||
if (connector != null)
|
||||
{
|
||||
MindLayout?.GetOrSetConnectionViewModel(connector.SourceConnectorInfo.DataItem as MindNode, connector.SinkConnectorInfoFully.DataItem as MindNode, connector);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
@@ -458,14 +438,11 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
case nameof(NodeLevel):
|
||||
MindLayout?.Appearance(this);
|
||||
break;
|
||||
case nameof(MindType):
|
||||
InitLayout(true);
|
||||
break;
|
||||
case nameof(Left):
|
||||
{
|
||||
if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs)
|
||||
{
|
||||
if (NodeLevel == NodeLevel.Level1)
|
||||
if (NodeLevel == 0)
|
||||
{
|
||||
LayoutUpdated();
|
||||
}
|
||||
@@ -481,7 +458,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs)
|
||||
{
|
||||
if (NodeLevel == NodeLevel.Level1)
|
||||
if (NodeLevel == 0)
|
||||
{
|
||||
LayoutUpdated();
|
||||
}
|
||||
@@ -516,7 +493,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
public MindNode GetLevel2Node()
|
||||
{
|
||||
var node = this;
|
||||
while (node.Parent is MindNode mindNode && mindNode.NodeLevel == NodeLevel.Level2)
|
||||
while (node.Parent is MindNode mindNode && mindNode.NodeLevel == 1)
|
||||
{
|
||||
node = mindNode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user