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 log4net; namespace HMI.SettingControl { /// /// UserControl1.xaml 的交互逻辑 /// public partial class SettingControl : PluginControl { #region ... public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void Set(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void Set(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { Set(propertyName); } } #endregion #region 属性 private ILog log; private ObservableCollection tabItems; public ObservableCollection TabItems { get { return tabItems; } set { Set(ref tabItems, value); } } #endregion #region PluginApi public object Init() { return null; } public object Active() { return null; } public object DeActive() { return null; } public void OnTabChange(object sender, object args) { } public void SetLogger(ILog logger) { log = logger; } #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 }); } Loaded -= UserControl_Loaded; } } }