Files
serein-flow/WorkBench/Node/View/NodeControlBase.cs

89 lines
1.8 KiB
C#
Raw Normal View History

2024-08-06 15:41:14 +08:00
using Serein.Flow;
using Serein.Flow.NodeModel;
2024-08-05 10:11:58 +08:00
using Serein.WorkBench.Themes;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Controls;
using System.Windows.Media;
namespace Serein.WorkBench.Node.View
{
/// <summary>
/// 节点控件基类(控件)
/// </summary>
public abstract class NodeControlBase : UserControl, IDynamicFlowNode
{
public NodeBase Node { get; set; }
2024-08-05 10:11:58 +08:00
protected NodeControlBase()
2024-08-05 10:11:58 +08:00
{
this.Background = Brushes.Transparent;
}
protected NodeControlBase(NodeBase node)
{
this.Background = Brushes.Transparent;
2024-08-05 10:11:58 +08:00
Node = node;
}
}
public abstract class NodeControlViewModel : INotifyPropertyChanged
{
2024-08-05 10:11:58 +08:00
public MethodDetails methodDetails;
2024-08-05 10:11:58 +08:00
public MethodDetails MethodDetails
{
get => methodDetails;
set
{
methodDetails = value;
OnPropertyChanged();
}
}
2024-08-05 10:11:58 +08:00
public event PropertyChangedEventHandler PropertyChanged;
2024-08-05 10:11:58 +08:00
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
2024-08-05 10:11:58 +08:00
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class FLowNodeObObservableCollection<T> : ObservableCollection<T>
{
public void AddRange(IEnumerable<T> items)
{
foreach (var item in items)
{
this.Items.Add(item);
}
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add));
}
}
}