对象预览器支持了值类型集合成员的简单预览

This commit is contained in:
fengjiayi
2024-09-24 22:39:43 +08:00
parent 8a502b77d4
commit 06f6d2f34b
28 changed files with 1674 additions and 859 deletions

View File

@@ -0,0 +1,58 @@
using Serein.Library.Enums;
using Serein.NodeFlow.Base;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Serein.WorkBench.Themes
{
/// <summary>
/// LazyTreeView.xaml 的交互逻辑
/// </summary>
public partial class LazyTreeView : UserControl
{
public ObservableCollection<NodeModelBase> RootNodes { get; set; }
public LazyTreeView()
{
InitializeComponent();
RootNodes = new ObservableCollection<NodeModelBase>();
treeView.DataContext = this;
}
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (e.NewValue is NodeModelBase node)
{
// 在这里设置 Expanded 事件
var treeViewItem = (TreeViewItem)treeView.ItemContainerGenerator.ContainerFromItem(node);
treeViewItem.Expanded += (s, args) => LoadChildren(node, treeViewItem);
}
}
private void LoadChildren(NodeModelBase node, TreeViewItem treeViewItem)
{
// 懒加载逻辑
if (node.SuccessorNodes.Count > 0)
{
treeViewItem.Items.Clear();
foreach (var child in node.SuccessorNodes[ConnectionType.IsSucceed]) // 根据类型加载子项
{
treeViewItem.Items.Add(child);
}
}
}
}
}