using Prism.Commands; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; 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; using Team.FFFeederService; using Team.FFFeederService.Interfaces; using TeamAAS_VP; namespace TeamAAS_VP.Controls { /// /// AflexControl.xaml 的交互逻辑 /// public partial class AflexControl : UserControl, INotifyPropertyChanged { public AflexControl() { InitializeComponent(); this.DataContext = this; } public AfagFeeder Feeder { get; set; } private int _ConfigIndex; /// /// 配置编号 /// public int ConfigIndex { get { return _ConfigIndex; } set { SetProperty(ref _ConfigIndex, value); } } private double _Intensity; /// /// 振动强度 /// public double Intensity { get { return _Intensity; } set { SetProperty(ref _Intensity, value); } } private double _Direction; /// /// 方向 /// public double Direction { get { return _Direction; } set { SetProperty(ref _Direction, value); } } private double _Backlight; /// /// 背光亮度 /// public double Backlight { get { return _Backlight; } set { SetProperty(ref _Backlight, value); } } private DelegateCommand _ActionCommand; public DelegateCommand ActionCommand => _ActionCommand ?? (_ActionCommand = new DelegateCommand(ExecuteActionCommand)); /// /// 执行命令 /// /// void ExecuteActionCommand(string cmd) { try { if (Feeder == null) { return; } switch (int.Parse(cmd)) { case 1: if (ConfigIndex<0) { return; } Feeder.LoadConfiguration(ConfigIndex+1); break; case 2: Feeder.SetIntensity(Intensity); break; case 3: Feeder.SetDirection(Direction); break; case 4: Feeder.SetBackLight(Backlight); break; } } catch (Exception ex) { LogHelper.WriteLogError("Afag Feeder写入参数时出错!", ex); } } #region 属性更改通知 /// /// Occurs when a property value changes. /// public event PropertyChangedEventHandler PropertyChanged; /// /// Checks if a property already matches a desired value. Sets the property and /// notifies listeners only when necessary. /// /// Type of the property. /// Reference to a property with both getter and setter. /// Desired value for the property. /// Name of the property used to notify listeners. This /// value is optional and can be provided automatically when invoked from compilers that /// support CallerMemberName. /// True if the value was changed, false if the existing value matched the /// desired value. protected virtual bool SetProperty(ref T storage, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(storage, value)) return false; storage = value; RaisePropertyChanged(propertyName); return true; } /// /// Checks if a property already matches a desired value. Sets the property and /// notifies listeners only when necessary. /// /// Type of the property. /// Reference to a property with both getter and setter. /// Desired value for the property. /// Name of the property used to notify listeners. This /// value is optional and can be provided automatically when invoked from compilers that /// support CallerMemberName. /// Action that is called after the property value has been changed. /// True if the value was changed, false if the existing value matched the /// desired value. protected virtual bool SetProperty(ref T storage, T value, Action onChanged, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(storage, value)) return false; storage = value; onChanged?.Invoke(); RaisePropertyChanged(propertyName); return true; } /// /// Raises this object's PropertyChanged event. /// /// Name of the property used to notify listeners. This /// value is optional and can be provided automatically when invoked from compilers /// that support . protected void RaisePropertyChanged([CallerMemberName] string propertyName = null) { OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } /// /// Raises this object's PropertyChanged event. /// /// The PropertyChangedEventArgs protected virtual void OnPropertyChanged(PropertyChangedEventArgs args) { PropertyChanged?.Invoke(this, args); } #endregion } }