mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-20 00:06:45 +08:00
添加画布信息视图
This commit is contained in:
41
Workbench/ViewModels/CanvasNodeTreeViewModel.cs
Normal file
41
Workbench/ViewModels/CanvasNodeTreeViewModel.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Serein.Library;
|
||||
using Serein.Workbench.Services;
|
||||
using Serein.Workbench.Views;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Serein.Workbench.ViewModels
|
||||
{
|
||||
internal partial class CanvasInfoViewModel : ObservableObject
|
||||
{
|
||||
private readonly FlowNodeService flowNodeService;
|
||||
|
||||
/// <summary>
|
||||
/// 画布数据实体
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private FlowCanvasDetails _model;
|
||||
|
||||
public CanvasInfoViewModel(FlowNodeService flowNodeService)
|
||||
{
|
||||
this.flowNodeService = flowNodeService;
|
||||
this.flowNodeService.OnViewCanvasChanged += OnViewCanvasChanged;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查看的画布发生改变
|
||||
/// </summary>
|
||||
/// <param name="flowCanvas"></param>
|
||||
private void OnViewCanvasChanged(FlowCanvasView flowCanvas)
|
||||
{
|
||||
if (flowCanvas.DataContext is FlowCanvasViewModel vm)
|
||||
{
|
||||
Model = vm.Model;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,8 +22,11 @@ namespace Serein.Workbench.ViewModels
|
||||
/// </summary>
|
||||
public partial class FlowEditViewModel : ObservableObject
|
||||
{
|
||||
public ObservableCollection<FlowEditorTabModel> CanvasTabs { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// 画布集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private ObservableCollection<FlowEditorTabModel> _canvasTabs = [];
|
||||
|
||||
/// <summary>
|
||||
/// 当前选择的画布
|
||||
@@ -42,11 +45,8 @@ namespace Serein.Workbench.ViewModels
|
||||
flowNodeService.OnRemoveFlowCanvasView += OnRemoveFlowCanvasView; // 移除了画布
|
||||
this.PropertyChanged += OnPropertyChanged;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void OnPropertyChanged(object? value, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (this.SelectedTab is null) return;
|
||||
@@ -56,9 +56,13 @@ namespace Serein.Workbench.ViewModels
|
||||
#region 响应环境事件
|
||||
private void OnCreateFlowCanvasView(FlowCanvasView canvas)
|
||||
{
|
||||
var model = new FlowEditorTabModel(canvas);
|
||||
CanvasTabs.Add(model);
|
||||
SelectedTab = model;
|
||||
var tab = new FlowEditorTabModel(canvas);
|
||||
if(canvas is IFlowCanvas flowCanvas)
|
||||
{
|
||||
tab.Model = flowCanvas.Model;
|
||||
}
|
||||
CanvasTabs.Add(tab);
|
||||
SelectedTab = tab;
|
||||
}
|
||||
private void OnRemoveFlowCanvasView(FlowCanvasView canvas)
|
||||
{
|
||||
@@ -102,7 +106,7 @@ namespace Serein.Workbench.ViewModels
|
||||
if (tab != null)
|
||||
{
|
||||
tab.IsEditing = false;
|
||||
if(tab.Name != newName && !string.IsNullOrWhiteSpace(newName)) tab.Name = newName; // 名称合法时设置新名称
|
||||
if(tab.Model.Name != newName && !string.IsNullOrWhiteSpace(newName)) tab.Model.Name = newName; // 名称合法时设置新名称
|
||||
OnPropertyChanged(nameof(CanvasTabs)); // 刷新Tabs集合
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,25 +15,18 @@ namespace Serein.Workbench.ViewModels
|
||||
ServiceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
//private IServiceProvider GetService()
|
||||
//{
|
||||
// var service = new ServiceCollection();
|
||||
// service.AddSingleton<MainViewModel>();
|
||||
// service.AddSingleton<MainMenuBarViewModel>();
|
||||
// service.AddSingleton<FlowWorkbenchViewModel>();
|
||||
// service.AddSingleton<BaseNodesViewModel>();
|
||||
// service.AddSingleton<FlowLibrarysViewModel>();
|
||||
// service.AddTransient<FlowLibraryMethodDetailssViewModel>();
|
||||
// return service.BuildServiceProvider();
|
||||
//}
|
||||
|
||||
|
||||
public MainViewModel MainViewModel => App.GetService<MainViewModel>() ?? throw new NotImplementedException();
|
||||
public MainMenuBarViewModel MainMenuBarViewModel => App.GetService<MainMenuBarViewModel>() ?? throw new NotImplementedException();
|
||||
public FlowWorkbenchViewModel FlowWorkbenchViewModel => App.GetService<FlowWorkbenchViewModel>() ?? throw new NotImplementedException();
|
||||
public BaseNodesViewModel BaseNodesViewModel => App.GetService<BaseNodesViewModel>() ?? throw new NotImplementedException();
|
||||
public FlowLibrarysViewModel FlowLibrarysViewModel => App.GetService<FlowLibrarysViewModel>() ?? throw new NotImplementedException();
|
||||
public FlowEditViewModel FlowEditViewModel => App.GetService<FlowEditViewModel>() ?? throw new NotImplementedException();
|
||||
|
||||
|
||||
|
||||
public FlowCanvasViewModel FlowCanvasViewModel => App.GetService<FlowCanvasViewModel>() ?? throw new NotImplementedException();
|
||||
public CanvasInfoViewModel CanvasNodeTreeViewModel => App.GetService<CanvasInfoViewModel>() ?? throw new NotImplementedException();
|
||||
|
||||
public IServiceProvider ServiceProvider { get; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user