using HMI.Core.Manager; using System; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; namespace HMI.StdControl { /// /// StdEnableMes.xaml 的交互逻辑 /// public partial class StdSettingCheckBox : UserControl, INotifyPropertyChanged { #region ... public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void Set([CallerMemberName] string name = null) { 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 private event EventHandler valueChanged; public event EventHandler ValueChanged { add { valueChanged += value; } remove { valueChanged -= value; } } public static DependencyProperty IsCheckedProperty = DependencyProperty.Register( "IsChecked", typeof(bool), typeof(StdSettingCheckBox), new FrameworkPropertyMetadata(false)); public static DependencyProperty ValueProperty = DependencyProperty.Register( "Value", typeof(string), typeof(StdSettingCheckBox), new FrameworkPropertyMetadata(null)); public static DependencyProperty CbEnabledProperty = DependencyProperty.Register( "CbEnabled", typeof(bool), typeof(StdSettingCheckBox), new FrameworkPropertyMetadata(true)); public static DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof(string), typeof(StdSettingCheckBox), new FrameworkPropertyMetadata(null)); public bool CbEnabled { get => (bool)GetValue(CbEnabledProperty); set { SetValue(CbEnabledProperty, value); } } public string Value { get => (string)GetValue(ValueProperty); set { SetValue(ValueProperty, value); } } public string Text { get => (string)GetValue(TextProperty); set { SetValue(TextProperty, value); } } public bool IsChecked { get => (bool)GetValue(IsCheckedProperty); set { if (WriteConfig(Value, value)) { SetValue(IsCheckedProperty, value); } } } public StdSettingCheckBox() { InitializeComponent(); this.Loaded += StdSettingCheckBox_Loaded; } private void StdSettingCheckBox_Loaded(object sender, RoutedEventArgs e) { try { var value = ParameterManager.GetCommonParameterByName(Value); if (value == null) { this.Visibility = System.Windows.Visibility.Collapsed; } else { IsChecked = bool.Parse(value.Value); } } catch { IsChecked = false; } } private bool WriteConfig(string name, bool value) { try { valueChanged?.Invoke(this, new StdUIEventArg() { StringValue = name, BoolValue = value }); return ParameterManager.UpdateCommonParameter(name, value, out string errMsg); } catch (Exception ex) { return false; } } } }