using CommunityToolkit.Mvvm.ComponentModel; using HMI.Base; using HMI.UI.DpUtil; using HMI.UI.MDI; using System.ComponentModel; using System.IO; using System.Windows; namespace Plugin.DODriverControl { /// /// DOControl.xaml 的交互逻辑 /// [ObservableObject] public partial class DOControl : SimpleMaskControl { public DOControl() { this.DataContext = this; InitializeComponent(); } [ObservableProperty] private string workspaceSetting; public override void InitFinish() { WorkspaceSetting = Path.Combine(BaseFolder, "Workspace.xml"); base.InitFinish(); } private List controls = new List(); private List InitGridSize() { List result = new List(); result.Add(new CanvasPosition { Left = 0, Top = 0, Width = 0.1 * ActualWidth, Height = 0.5 * ActualHeight }); result.Add(new CanvasPosition { Left = 0.1 * ActualWidth + 2, Top = 0, Width = 0.5 * ActualWidth - 4, Height = ActualHeight, }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0, Top = 0.5 * ActualHeight + 2, Width = 0.1 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0.5 * ActualHeight + 2, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); return result; } public override void Active() { foreach (var control in controls) { control.Active(); } base.Active(); } public override void DeActive() { foreach (var control in controls) { control.DeActive(); } base.DeActive(); } public override void OnClose(object sender, CancelEventArgs e) { Dispatcher.Invoke(() => { foreach (var control in controls) { control.Close(); } }); base.DoClose(sender, e); } private void LoadSingleControl() { var ps = InitGridSize(); var control = new SingleControl("DIO", BaseFolder) { log = log }; controls.Add(control); workspace.AddInnerWindow(control.name, new InnerWindow() { Title = control.name, Content = control }); //var control2 = new SingleControl("DIO2", BaseFolder) //{ // log = log //}; //controls.Add(control2); //workspace.AddInnerWindow(control2.name, new InnerWindow() //{ // Title = control2.name, // Content = control2 //}); } private void PluginMaskControl_Loaded(object sender, RoutedEventArgs e) { LoadSingleControl(); Loaded -= PluginMaskControl_Loaded; } } }