mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-22 17:58:33 +08:00
mind基本完成,准备写文档
This commit is contained in:
@@ -45,6 +45,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
return Items.OfType<MindNode>().FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
public MindNode MindSelectedItem
|
||||
{
|
||||
get
|
||||
{
|
||||
return SelectedItem as MindNode;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 命令
|
||||
@@ -280,7 +288,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
return this._expand2LevelCommand ?? (this._expand2LevelCommand = new SimpleCommand(ExecuteEnable, this.ExecutedExpand2LevelCommand));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
public MindDiagramViewModel()
|
||||
@@ -294,7 +302,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
InitRootItem();
|
||||
}
|
||||
GetChildren(RootItem);
|
||||
ResetChildren(RootItem);
|
||||
RootItem?.LayoutUpdated();
|
||||
base.Init();
|
||||
}
|
||||
@@ -325,7 +333,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
return (SelectedItem as MindNode).NodeLevel != 0;
|
||||
}
|
||||
|
||||
#region 操作
|
||||
#region 添加删除
|
||||
public void ExecuteAddChildCommand(object parameter)
|
||||
{
|
||||
List<MindNode> items = new List<MindNode>();
|
||||
@@ -578,15 +586,9 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
else
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
protected override void ExecuteCenterMoveCommand(object parameter)
|
||||
{
|
||||
RootItem.Left = (PageSize.Width - RootItem.ItemWidth) / 2;
|
||||
RootItem.Top = (PageSize.Height - RootItem.ItemHeight) / 2;
|
||||
RootItem?.LayoutUpdated();
|
||||
FitViewModel = new FitViewModel() { BoundingRect = RootItem.GetBounds() };
|
||||
}
|
||||
|
||||
#region 附加信息
|
||||
private void ExecuteAddLinkCommand(object obj)
|
||||
{
|
||||
if (obj is object[] array && array.Length == 2)
|
||||
@@ -687,7 +689,9 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
p.Tags.Remove(obj?.ToString());
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 改变模式,主题
|
||||
private void ExecutedChangeMindTypeCommand(object obj)
|
||||
{
|
||||
if (obj is MindType mindType)
|
||||
@@ -748,7 +752,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private MindNode FormatNode;
|
||||
private MindNode _formatNode;
|
||||
private void ExecutedCopyThemeCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
@@ -762,13 +766,13 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
FormatNode = node;
|
||||
_formatNode = node;
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecutedPasteThemeCommand(object parameter)
|
||||
{
|
||||
if (FormatNode != null)
|
||||
if (_formatNode != null)
|
||||
{
|
||||
List<MindNode> nodes = new List<MindNode>();
|
||||
if (parameter is MindNode node1)
|
||||
@@ -790,8 +794,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
() => {
|
||||
foreach (var node in nodes)
|
||||
{
|
||||
CopyHelper.CopyPropertyValue(FormatNode.ColorViewModel, node.ColorViewModel);
|
||||
CopyHelper.CopyPropertyValue(FormatNode.FontViewModel, node.FontViewModel);
|
||||
CopyHelper.CopyPropertyValue(_formatNode.ColorViewModel, node.ColorViewModel);
|
||||
CopyHelper.CopyPropertyValue(_formatNode.FontViewModel, node.FontViewModel);
|
||||
}
|
||||
RootItem.LayoutUpdated();
|
||||
},
|
||||
@@ -803,6 +807,16 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 操作
|
||||
protected override void ExecuteCenterMoveCommand(object parameter)
|
||||
{
|
||||
RootItem.Left = (PageSize.Width - RootItem.ItemWidth) / 2;
|
||||
RootItem.Top = (PageSize.Height - RootItem.ItemHeight) / 2;
|
||||
RootItem?.LayoutUpdated();
|
||||
FitViewModel = new FitViewModel() { BoundingRect = RootItem.GetBounds() };
|
||||
}
|
||||
|
||||
private void ExecutedExpand2LevelCommand(object obj)
|
||||
{
|
||||
@@ -823,8 +837,84 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.IsExpanded = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void ExecuteSelectBrotherCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null && node.ParentNode != null)
|
||||
{
|
||||
foreach (var child in node.ParentNode.Children)
|
||||
{
|
||||
child.IsSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void ExecuteSelectPearCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
foreach (var item in Items.OfType<MindNode>().Where(p => p.NodeLevel == node.NodeLevel))
|
||||
{
|
||||
item.IsSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void ExecuteSelectRouteCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
GetParent(node).ForEach(p => p.IsSelected = true);
|
||||
}
|
||||
}
|
||||
|
||||
protected void ExecuteSelectChildCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
GetChildren(node).ForEach(p => p.IsSelected = true);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 初始化
|
||||
protected override void ExecutedResetLayoutCommand(object obj)
|
||||
{
|
||||
foreach (var item in Items.OfType<MindNode>())
|
||||
@@ -834,7 +924,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
RootItem?.LayoutUpdated();
|
||||
}
|
||||
|
||||
private void GetChildren(MindNode parent)
|
||||
private void ResetChildren(MindNode parent)
|
||||
{
|
||||
if (parent == null)
|
||||
return;
|
||||
@@ -845,9 +935,34 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.Parent = parent;
|
||||
item.InitLayout(false);
|
||||
item.InitConnectLayout();
|
||||
GetChildren(item);
|
||||
ResetChildren(item);
|
||||
}
|
||||
}
|
||||
|
||||
private List<MindNode> GetParent(MindNode node)
|
||||
{
|
||||
List<MindNode> mindnode = new List<MindNode>();
|
||||
while (node.ParentNode != null)
|
||||
{
|
||||
mindnode.Add(node.ParentNode);
|
||||
node = node.ParentNode;
|
||||
}
|
||||
return mindnode;
|
||||
}
|
||||
|
||||
private List<MindNode> GetChildren(MindNode parent)
|
||||
{
|
||||
List<MindNode> mindnode = new List<MindNode>();
|
||||
if (parent.Children != null)
|
||||
{
|
||||
foreach (var child in parent.Children)
|
||||
{
|
||||
mindnode.Add(child);
|
||||
mindnode.AddRange(GetChildren(child));
|
||||
}
|
||||
}
|
||||
return mindnode;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user