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;
}
}
}
}