using HMI.Base; using HMI.Core.Api; using HMI.Core.Util; using HMI.UI.Util; using System; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; namespace HMI.SettingControl { /// /// UserControl1.xaml 的交互逻辑 /// public partial class SettingControl : PluginControl { #region 属性 private ObservableCollection tabItems; public ObservableCollection TabItems { get { return tabItems; } set { Set(ref tabItems, value); } } #endregion public SettingControl() { DataContext = this; InitializeComponent(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { TabItems = new ObservableCollection() { new TabItem { Header = "系统设置", Content = new SystemConfig() } }; foreach (var d in PluginLoader.Instance.Plugins) { if (d.SettingControl == null) continue; TabItems.Add(new TabItem { Header = d.Name, Tag = d, Content = d.SettingControl }); } tabControl.SelectedIndex = 0; Loaded -= UserControl_Loaded; } private void Button_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; switch (btn.Name) { case "resetBtn": ResetCurrentConfig(); break; case "saveBtn": SaveAllConfig(); break; default: break; } } private void SaveAllConfig() { foreach (var d in tabControl.ItemsSource) { if (!(d is TabItem tabItem)) continue; if (tabItem.Content is IConfigManager manager) { try { manager.SaveConfig(); this.Success(this.lang("App.SaveSuccess")); } catch (Exception ex) { MsgBoxHelper.Error(this, $"{tabItem.Header}{this.lang("App.SaveFailed")}: {ex.Message}"); } } } } private void SaveCurrentConfig() { var content = tabControl.SelectedItem as TabItem; if (content is IConfigManager manager) { try { manager.SaveConfig(); } catch (Exception ex) { MsgBoxHelper.Error(this, $"{this.lang("App.SaveFailed")}: {ex.Message}"); } } } private void ResetCurrentConfig() { var tabItem = tabControl.SelectedItem as TabItem; if (tabItem.Content is IConfigManager manager) { try { manager.ResetConfig(); } catch (Exception ex) { MsgBoxHelper.Error(this, $"{this.lang("App.SaveFailed")}: {ex.Message}"); } } } } }