| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using Plugins.Vm.Models;
- using TeamAAS;
- using TeamAAS.FlowEditor.Plugins;
- using TeamAAS.FlowEngine;
- namespace Plugins.Vm.Views
- {
- /// <summary>
- /// VM 工具块节点编辑视图:主区承载海康 VM 自带的流程配置控件 VmProcedureConfigControl,
- /// 按“方案路径/流程名”加载方案并绑定,用户直接在 VM 原生界面里编辑流程。
- /// 遵循插件视图约定:DataContext 为 VmToolBlockModel(由宿主注入),实现 IPluginViewSave 回写。
- /// </summary>
- public partial class VmToolBlockEditView : UserControl, IPluginViewSave
- {
- public VmToolBlockEditView()
- {
- InitializeComponent();
- Loaded += OnLoaded;
- Unloaded += OnUnloaded;
- }
- private VmToolBlockModel Model => DataContext as VmToolBlockModel;
- private void OnLoaded(object sender, RoutedEventArgs e)
- {
- var model = Model;
- if (model == null) return;
- TxtTitle.Text = string.IsNullOrWhiteSpace(model.NodeName) ? "VM工具块" : model.NodeName;
- LoadAndBind();
- }
- /// <summary>加载 VM 方案(若未加载)并把流程绑定到配置控件。</summary>
- private void LoadAndBind()
- {
- var model = Model;
- if (model == null) return;
- try
- {
- if (model.Solution == null && !string.IsNullOrWhiteSpace(model.SolutionPath))
- model.Solution = VmRuntime.LoadSolution(model.SolutionPath);
- if (model.Solution != null && !string.IsNullOrWhiteSpace(model.ProcedureName))
- Config.BindSingleProcedure(model.ProcedureName);
- }
- catch (Exception ex)
- {
- DialogHelper.Error($"加载 VM 方案/流程失败:{ex.Message}");
- }
- }
- private void BtnLoad_Click(object sender, RoutedEventArgs e) => LoadAndBind();
- /// <summary>属性按钮:配置方案路径/流程名/输入映射/输出终端名(走通用属性网格)。</summary>
- private void BtnProperties_Click(object sender, RoutedEventArgs e)
- {
- var model = Model;
- if (model == null) return;
- PluginLoader.Instance.ParentGroupModel = model;
- try
- {
- if (DialogHelper.EditProperties(model, $"VM工具块属性 - {model.NodeName}"))
- {
- TxtTitle.Text = string.IsNullOrWhiteSpace(model.NodeName) ? "VM工具块" : model.NodeName;
- LoadAndBind();
- }
- }
- finally
- {
- PluginLoader.Instance.ParentGroupModel = null;
- }
- }
- private void OnUnloaded(object sender, RoutedEventArgs e)
- {
- //SaveChanges();
- PluginLoader.Instance.ParentGroupModel = null;
- }
- /// <summary>保存:VM 配置控件直接编辑已加载方案,这里把方案写回磁盘。</summary>
- public void SaveChanges()
- {
- try { VM.Core.VmSolution.Save(); } catch { /* 未加载方案时忽略 */ }
- }
- }
- }
|