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 { /// /// VM 工具块节点编辑视图:主区承载海康 VM 自带的流程配置控件 VmProcedureConfigControl, /// 按“方案路径/流程名”加载方案并绑定,用户直接在 VM 原生界面里编辑流程。 /// 遵循插件视图约定:DataContext 为 VmToolBlockModel(由宿主注入),实现 IPluginViewSave 回写。 /// 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(); } /// 加载 VM 方案(若未加载)并把流程绑定到配置控件。 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(); /// 属性按钮:配置方案路径/流程名/输入映射/输出终端名(走通用属性网格)。 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; } /// 保存:VM 配置控件直接编辑已加载方案,这里把方案写回磁盘。 public void SaveChanges() { try { VM.Core.VmSolution.Save(); } catch { /* 未加载方案时忽略 */ } } } }