alielie
2025-03-18 a061384ba628a09bf4df91f50321ab22c03129aa
WPFProject/Controls/MainTabControl.xaml.cs
@@ -1,10 +1,15 @@
using System.Collections.ObjectModel;
using 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);
        }
    }
}