using IViewModel; using IViewModel.ViewModels; using Shaker.Model; using Shaker.Models; using Shaker.Tools; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Dynamicloadsimulationdevice.ViewModels { internal sealed class AOConfigViewModel:ViewModelBase { private string unit=string.Empty; public AOConfigViewModel():base() { } public AOConfigViewModel(Shaker.Models.AOConfigModel model):base(model) { } public override void UpDateModel(AOConfigModel model) { Unit = model.ChannelType.GetUnit(); base.UpDateModel(model); } /// /// 极性 /// [PropertyAssociation(nameof(Model.Polarity))] public Shaker.Model.Polarity Polarity { get=> Model.Polarity; set=>SetProperty(ref Model.Polarity , value); } /// /// 开环 /// [PropertyAssociation(nameof(Model.OpenLoop))] public bool OpenLoop { get => Model.OpenLoop;set=>SetProperty(ref Model.OpenLoop, value); } /// /// 开环驱动 /// [PropertyAssociation(nameof(Model.OpenLoopDriver))] public double OpenLoopDriver { get=>Model.OpenLoopDriver; set=>SetProperty(ref Model.OpenLoopDriver, value); } /// /// 最大开环驱动 /// [PropertyAssociation(nameof(Model.MaxOpenLoopDriver))] public double MaxOpenLoopDriver =>Model.MaxOpenLoopDriver; /// /// 最小开环驱动 /// [PropertyAssociation(nameof(Model.MinOpenLoopDriver))] public double MinOpenLoopDriver =>Model.MinOpenLoopDriver; /// /// 通道序号 /// [PropertyAssociation(nameof(Model.Channel))] public AOChannel Channel { get=>Model.Channel; set=>SetProperty(ref Model.Channel, value); } /// /// 偏置 /// [PropertyAssociation(nameof(Model.Bias))] public double Bias { get=>Model.Bias; set=>SetProperty(ref Model.Bias, value); } /// /// 最大偏置 /// [PropertyAssociation(nameof(Model.MaxBias))] public double MaxBias => Model.MaxBias; /// /// 最小偏置 /// [PropertyAssociation(nameof(Model.MinBias))] public double MinBias => Model.MinBias; /// /// 通道类型 /// [PropertyAssociation(nameof(Model.ChannelType))] public AOChannelType ChannelType => Model.ChannelType; /// /// 单位 /// [PropertyAssociation(nameof(Model.ChannelType))] public string Unit { get => unit; private set =>SetProperty(ref unit , value); } [PropertyAssociation(nameof(ChannelType))] public bool CanOpenLoop => ChannelType != AOChannelType.Balancing; public override string ToString() { return CanOpenLoop ? (OpenLoop? $"{ChannelType} {Channel} {Polarity} {nameof(Bias)}:{Bias} {nameof(OpenLoop)}{OpenLoop}" :$"{ChannelType} {Channel} {Polarity} {nameof(Bias)}:{Bias}") : $"{ChannelType} {Channel}"; } } }