改写NodeModelBase类,使其继承Serein.Library.Api下的IFlowNode接口,而实现类迁移到NodeModel项目,方便后续节点运行逻辑修改时不用重新编译类库。

This commit is contained in:
fengjiayi
2025-05-31 12:15:01 +08:00
parent cc0b084c84
commit 84390b574f
36 changed files with 562 additions and 121 deletions

View File

@@ -16,6 +16,7 @@ using Serein.Workbench.Services;
using Serein.Workbench.Tool;
using System.ComponentModel;
using System.Diagnostics;
using Serein.Library.Api;
namespace Serein.Workbench.Node.View
{
@@ -60,15 +61,15 @@ namespace Serein.Workbench.Node.View
#region
public static readonly DependencyProperty NodeProperty =
DependencyProperty.Register(nameof(MyNode), typeof(NodeModelBase), typeof(ParamsArgControl), new PropertyMetadata(default(NodeModelBase)));
DependencyProperty.Register(nameof(MyNode), typeof(IFlowNode), typeof(ParamsArgControl), new PropertyMetadata(default(IFlowNode)));
//public NodeModelBase NodeModel;
/// <summary>
/// 所在的节点
/// </summary>
public NodeModelBase MyNode
public IFlowNode MyNode
{
get { return (NodeModelBase)GetValue(NodeProperty); }
get { return (IFlowNode)GetValue(NodeProperty); }
set { SetValue(NodeProperty, value); }
}
#endregion
@@ -194,15 +195,15 @@ namespace Serein.Workbench.Node.View
#region
public static readonly DependencyProperty NodeProperty =
DependencyProperty.Register(nameof(MyNode), typeof(NodeModelBase), typeof(JunctionControlBase), new PropertyMetadata(default(NodeModelBase)));
DependencyProperty.Register(nameof(MyNode), typeof(IFlowNode), typeof(JunctionControlBase), new PropertyMetadata(default(IFlowNode)));
//public NodeModelBase NodeModel;
/// <summary>
/// 所在的节点
/// </summary>
public NodeModelBase MyNode
public IFlowNode MyNode
{
get { return (NodeModelBase)GetValue(NodeProperty); }
get { return (IFlowNode)GetValue(NodeProperty); }
set { SetValue(NodeProperty, value); }
}
#endregion

View File

@@ -5,6 +5,7 @@ using System.Windows.Controls;
using System.Windows.Data;
using System;
using CommunityToolkit.Mvvm.ComponentModel;
using Serein.Library.Api;
namespace Serein.Workbench.Node.ViewModel
{
@@ -14,9 +15,9 @@ namespace Serein.Workbench.Node.ViewModel
///// <summary>
///// 对应的节点实体类
///// </summary>
public NodeModelBase NodeModel { get; }
public IFlowNode NodeModel { get; }
public NodeControlViewModelBase(NodeModelBase nodeModel)
public NodeControlViewModelBase(IFlowNode nodeModel)
{
NodeModel = nodeModel;

View File

@@ -23,11 +23,11 @@ namespace Serein.Workbench.Node.View
/// <summary>
/// 起始节点
/// </summary>
public NodeModelBase StartNode { get; set; }
public IFlowNode StartNode { get; set; }
/// <summary>
/// 目标节点
/// </summary>
public NodeModelBase EndNode { get; set; }
public IFlowNode EndNode { get; set; }
/// <summary>
/// 来源于起始节点的(控制点)类型
@@ -63,7 +63,7 @@ namespace Serein.Workbench.Node.View
/// <summary>
/// 对应的视图对象
/// </summary>
public NodeModelBase NodeModel { get; set; }
public IFlowNode NodeModel { get; set; }
/// <summary>
///
/// </summary>

View File

@@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Serein.Library;
using Serein.Library.Api;
using Serein.NodeFlow.Model;
using Serein.Workbench.Api;
using Serein.Workbench.Services;
@@ -37,7 +38,7 @@ namespace Serein.Workbench.Node.ViewModel
/// 当前所选节点
/// </summary>
[ObservableProperty]
private NodeModelBase _selectNode;
private IFlowNode _selectNode;
[ObservableProperty]
@@ -88,7 +89,7 @@ namespace Serein.Workbench.Node.ViewModel
FlowCallNode.ResetTargetNode();
}
partial void OnSelectNodeChanged(NodeModelBase value)
partial void OnSelectNodeChanged(IFlowNode value)
{
if(value is null)
{

View File

@@ -23,7 +23,7 @@ namespace Serein.Workbench.Node.ViewModel
private UserControl _nodeUIContent;
public UINodeControlViewModel(NodeModelBase nodeModel) : base(nodeModel)
public UINodeControlViewModel(IFlowNode nodeModel) : base(nodeModel)
{
}