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;
using TeamAAS_VP.Resources.Languages;
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(Lang.AfagFeeder写入参数时出错, 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
}
}