| | |
| | | using HMI.Base; |
| | | using HMI.Core.Api; |
| | | using Microsoft.DwayneNeed.Interop; |
| | | using Panuon.WPF.UI; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Collections.ObjectModel; |
| | | using System.ComponentModel; |
| | |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | | using System.Windows.Data; |
| | | using System.Windows.Forms.Integration; |
| | | using System.Windows.Media; |
| | | using WPFProject.UI; |
| | | |
| | | namespace WPFProject.Controls |
| | | { |
| | | public class TabChangedEventArg |
| | | { |
| | | public IPlugin oldValue { get; set; } |
| | | public IPlugin newValue { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// MainTabControl.xaml 的交互逻辑 |
| | | /// </summary> |
| | |
| | | private WinFormHolder winFormHolder; |
| | | public MainTabControl() |
| | | { |
| | | IPlugin plugin = new WorkControl(); |
| | | MenuItems = new ObservableCollection<PluginInfo>(PluginLoader.GetLoader().Menus); |
| | | SubMenuItems = MenuItems[0].Children; |
| | | this.DataContext = this; |
| | |
| | | } |
| | | |
| | | // Tab切换事件 |
| | | public static readonly RoutedEvent OnTabChangeEvent = |
| | | EventManager.RegisterRoutedEvent("OnTabChange", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MenuTabControl)); |
| | | |
| | | public event RoutedEventHandler OnTabChange |
| | | { |
| | | add |
| | | { |
| | | AddHandler(OnTabChangeEvent, value); |
| | | } |
| | | |
| | | remove |
| | | { |
| | | RemoveHandler(OnTabChangeEvent, value); |
| | | } |
| | | } |
| | | public event EventHandler<TabChangedEventArg> TabChanged; |
| | | |
| | | private ObservableCollection<PluginInfo> _MenuItems; |
| | | |
| | |
| | | } |
| | | |
| | | var content = data.Content; |
| | | var last = page.Child; |
| | | PluginPackage.Get(last)?.DeActive(); |
| | | var newPlugin = PluginPackage.Get(content); |
| | | var last = PluginPackage.Get(page.Child); |
| | | |
| | | if (last != null && !last.CanDeActive()) |
| | | { |
| | | SelectedSubMenu = (PluginInfo)e.RemovedItems[0]; |
| | | return; |
| | | } |
| | | |
| | | if (newPlugin != null && !newPlugin.CanActive()) |
| | | { |
| | | if (e.RemovedItems.Count > 0) |
| | | { |
| | | SelectedSubMenu = (PluginInfo)e.RemovedItems[0]; |
| | | } |
| | | return; |
| | | } |
| | | |
| | | last?.DeActive(); |
| | | newPlugin?.Active(); |
| | | if (data.Type == "WinForm") |
| | | { |
| | | if (content is System.Windows.Forms.Form form) |
| | |
| | | { |
| | | page.Child = (UIElement)content; |
| | | } |
| | | |
| | | PluginPackage.Get(content)?.Active(); |
| | | TabChanged?.Invoke(this, new TabChangedEventArg { oldValue = last, newValue = newPlugin }); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | Loaded -= UserControl_Loaded; |
| | | } |
| | | |
| | | private string alarmInfo; |
| | | public string AlarmInfo |
| | | { |
| | | get => alarmInfo; |
| | | set |
| | | { |
| | | RaiseAndSetIfChanged(ref alarmInfo, value); |
| | | } |
| | | } |
| | | |
| | | private void Button_Click_1(object sender, RoutedEventArgs e) |
| | | { |
| | | alarmBorder.Visibility = Visibility.Collapsed; |
| | | AlarmInfo = string.Empty; |
| | | } |
| | | |
| | | public void ShowAlarm(string message) |
| | | { |
| | | AlarmInfo = message; |
| | | alarmBorder.Visibility = Visibility.Visible; |
| | | } |
| | | } |
| | | } |