mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-03 08:10:47 +08:00
对象预览器支持了值类型集合成员的简单预览
This commit is contained in:
71
WorkBench/Themes/NodeTreeView.cs
Normal file
71
WorkBench/Themes/NodeTreeView.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using Serein.NodeFlow.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Windows;
|
||||
using Serein.Library.Enums;
|
||||
|
||||
namespace Serein.WorkBench.Themes
|
||||
{
|
||||
public class NodeTreeView : TreeView
|
||||
{
|
||||
public NodeTreeView()
|
||||
{
|
||||
this.ItemContainerGenerator.StatusChanged += OnStatusChanged;
|
||||
}
|
||||
|
||||
private void OnStatusChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
var treeViewItem = (TreeViewItem)this.ItemContainerGenerator.ContainerFromItem(item);
|
||||
if (treeViewItem != null)
|
||||
{
|
||||
treeViewItem.Expanded += TreeViewItem_Expanded;
|
||||
ApplyColor(treeViewItem, item as NodeModelBase);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is TreeViewItem item && item.DataContext is NodeModelBase node)
|
||||
{
|
||||
if (item.Items.Count == 0) // 懒加载
|
||||
{
|
||||
foreach (var childNode in node.SuccessorNodes[ConnectionType.Upstream])
|
||||
{
|
||||
item.Items.Add(childNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyColor(TreeViewItem item, NodeModelBase node)
|
||||
{
|
||||
// 根据 ControlType 设置颜色
|
||||
switch (node.ControlType)
|
||||
{
|
||||
case NodeControlType.Flipflop:
|
||||
item.Background = Brushes.LightGreen;
|
||||
break;
|
||||
case NodeControlType.Action:
|
||||
item.Background = Brushes.LightCoral;
|
||||
break;
|
||||
// 添加更多条件
|
||||
default:
|
||||
item.Background = Brushes.Transparent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user