using HMI.Core.Util; using System; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; namespace HMI.UI { /// /// MaskControl.xaml 的交互逻辑 /// public partial class MaskControl : UserControl { public static MaskControl Instance; public static MaskControl GetInstance() { if (Instance == null) { Instance = new MaskControl(); } return Instance; } public MaskControl() { InitializeComponent(); } private void pausePanel_Loaded(object sender, RoutedEventArgs e) { var can = pausePanel; var modal = visualModal; Canvas.SetLeft(modal, (pausePanel.ActualWidth - visualModal.ActualWidth) / 2); Canvas.SetTop(modal, (pausePanel.ActualHeight - visualModal.ActualHeight) / 2.5); } public void ShowMask(UserControl control, Action action, Action reject = null, string title = null, string content = null) { this.titleLabel.Content = title ?? LangUtil.Get("App.PleaseWait"); this.contentLabel.Text = content; pausePanel.Visibility = Visibility.Visible; Task.Run(() => { try { action(); } catch (Exception ex) { if (reject != null) reject(ex); } finally { Dispatcher.BeginInvoke(new Action(() => { pausePanel.Visibility = Visibility.Collapsed; })); } }); } } }