using BPASmartClient.Compiler; using BPASmartClient.SCADAControl; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace BPASmartClient.SCADAControl.CustomerControls { /// /// TheTabControl.xaml 的交互逻辑 /// public partial class TheTabControl : TabControl, IExecutable { public event EventHandler PropertyChange; //声明一个事件 public TheTabControl() { InitializeComponent(); ResourceDictionary languageResDic = new ResourceDictionary(); languageResDic.Source = new Uri(@"/BPASmartClient.SCADAControl;component/Themes/Generic.xaml", UriKind.RelativeOrAbsolute); this.Resources.MergedDictionaries.Add(languageResDic); Width = 150; Height = 150; this.Loaded += TheTabControl_Loaded; this.SelectionChanged += TheTabControl_SelectionChanged; } private void TheTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { object _header = (this.SelectedItem as TabItem)?.Header; TabItems?.ToList().ForEach(par => { if (_header!=null && par.Header == (string)_header) { if(!string.IsNullOrEmpty(par.ClickStr)) Config.GetInstance().RunJsScipt(par.ClickStr); } }); } catch (Exception ex) { throw; } } private void TheTabControl_Loaded(object sender, RoutedEventArgs e) { TabItems.CollectionChanged += TabItems_CollectionChanged; } private void TabItems_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { this.Items.Clear(); if (TabItems.Count > 0) { try { TabItemsStr = JsonConvert.SerializeObject(TabItems); TabItems?.ToList().ForEach(item => { this.Items.Add(new TabItem { Header = item.Header, Style = (FindResource("TheTabItem") as Style) }); }); } catch (Exception ex) { } } } public string ControlType => "控件"; private bool isExecuteState; public bool IsExecuteState { get { return isExecuteState; } set { isExecuteState = value; if (IsExecuteState) { Register(); } } } /// /// 注册需要处理的事件 /// public void Register() { if (!string.IsNullOrEmpty(TabItemsStr)) { try { TabItems = JsonConvert.DeserializeObject>(TabItemsStr); } catch (Exception ex) { } } } #region 属性 [Category("名称[自动生成]")] private string TabItemsStr { get { return (string)GetValue(TabItemsStrProperty); } set { SetValue(TabItemsStrProperty, value); } } private static readonly DependencyProperty TabItemsStrProperty = DependencyProperty.Register("TabItemsStr", typeof(string), typeof(TheTabControl), new PropertyMetadata(string.Empty, new PropertyChangedCallback(onEventReceiveNameListStrChanged))); private static void onEventReceiveNameListStrChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) => (d as TheTabControl)?.TabItemsStrPropertyRefresh(); [Category("集合")] public ObservableCollection TabItems { get { return (ObservableCollection)GetValue(TabItemsProperty); } set { SetValue(TabItemsProperty, value); } } private static readonly DependencyProperty TabItemsProperty = DependencyProperty.Register("TabItems", typeof(ObservableCollection), typeof(TheTabControl), new PropertyMetadata(new ObservableCollection(), new PropertyChangedCallback(onEventNameListChanged))); private static void onEventNameListChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) => (d as TheTabControl)?.TabItemsPropertyRefresh(); public void TabItemsStrPropertyRefresh() { if (!string.IsNullOrEmpty(TabItemsStr)) { try { // TabItems = JsonConvert.DeserializeObject>(TabItemsStr); } catch (Exception ex) { } } } public void TabItemsPropertyRefresh() { } #endregion } public class TheTabItemModel { /// /// 序号 /// public int SortID { get; set; } /// /// 标题 /// public string Header { get; set; } /// /// 单机事件 /// public string ClickStr { get; set; } public TheTabItemModel() { SortID = 0; } } }