From 40014e6e41f1ec017a07b7a620b3c700807d0519 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期日, 23 三月 2025 13:51:00 +0800
Subject: [PATCH] 新增DOControl

---
 WPFProject/Controls/MainTabControl.xaml.cs |   57 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 46 insertions(+), 11 deletions(-)

diff --git a/WPFProject/Controls/MainTabControl.xaml.cs b/WPFProject/Controls/MainTabControl.xaml.cs
index ea85aaf..1e57271 100644
--- a/WPFProject/Controls/MainTabControl.xaml.cs
+++ b/WPFProject/Controls/MainTabControl.xaml.cs
@@ -1,10 +1,15 @@
-锘縰sing System.Collections.ObjectModel;
+锘縰sing HMI.Base;
+using HMI.Core.Api;
+using Microsoft.DwayneNeed.Interop;
+using Panuon.WPF.UI;
+using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Runtime.CompilerServices;
 using System.Windows;
 using System.Windows.Controls;
-using HMI.Base;
-using HMI.Core.Api;
+using System.Windows.Data;
+using System.Windows.Forms.Integration;
+using System.Windows.Media;
 using WPFProject.UI;
 
 namespace WPFProject.Controls
@@ -33,12 +38,14 @@
         }
         #endregion
 
+        private WinFormHolder winFormHolder;
         public MainTabControl()
         {
             IPlugin plugin = new WorkControl();
-            MenuItems = PluginLoader.GetLoader().Menus;
+            MenuItems = new ObservableCollection<PluginInfo>(PluginLoader.GetLoader().Menus);
             SubMenuItems = MenuItems[0].Children;
             this.DataContext = this;
+            winFormHolder = new WinFormHolder();
             InitializeComponent();
         }
 
@@ -120,9 +127,9 @@
             set { RaiseAndSetIfChanged(ref _MenuVisibility, value); }
         }
 
-        public void ChangeItemVisibility()
+        public void ChangeItemVisibility(bool visiable)
         {
-            MenuVisibility = MenuVisibility == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
+            MenuVisibility = visiable ? Visibility.Visible : Visibility.Collapsed;
         }
 
         private void Menu_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -145,12 +152,40 @@
             if (e.AddedItems?.Count > 0)
             {
                 var data = (PluginInfo)e.AddedItems[0];
-                var content = (UIElement)data.Content;
-                var last = (IPlugin)page.Child;
-                last?.DeActive();
-                page.Child = content;
-                ((IPlugin)content)?.Active();
+                var content = data.Content;
+                var last = page.Child;
+                PluginPackage.Get(last)?.DeActive();
+                if (data.Type == "WinForm")
+                {
+                    if (content is System.Windows.Forms.Form form)
+                    {
+                        winFormHolder.Content = form;
+                    }
+                    else
+                    {
+                        winFormHolder.Content = content;
+                    }
+                    page.Child = winFormHolder;
+                }
+                else
+                {
+                    page.Child = (UIElement)content;
+                }
+
+                PluginPackage.Get(content)?.Active();
             }
         }
+
+        private void UserControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            var ss = ((WindowX)Window.GetWindow(this));
+            Binding binding = new Binding("IsMaskVisible")
+            {
+                Source = ((WindowX)Window.GetWindow(this)),
+                Mode = BindingMode.TwoWay,
+                UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
+            };
+            winFormHolder.SetBinding(WinFormHolder.MaskVisiableProperty, binding);
+        }
     }
 }

--
Gitblit v1.9.1