From a061384ba628a09bf4df91f50321ab22c03129aa Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期二, 18 三月 2025 20:58:36 +0800
Subject: [PATCH] Winform支持遮罩层;
---
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