103 lines
3.3 KiB
C#
103 lines
3.3 KiB
C#
using System.Collections.Generic;
|
||
using System.Diagnostics;
|
||
using System.Linq;
|
||
using Aitex.Core.RT.Device.PmDevices;
|
||
using MECF.Framework.UI.Client.RecipeEditorLib.DGExtension.CustomColumn;
|
||
|
||
namespace MECF.Framework.UI.Client.RecipeEditorLib.RecipeModel.Params
|
||
{
|
||
public class ComboxParam : ParamBaseWithGenericValue<ComboxColumn.Option>
|
||
{
|
||
#region Constructors
|
||
|
||
public ComboxParam(IEnumerable<ComboxColumn.Option> options, string controlName, string initValue, string defaultValue)
|
||
{
|
||
// options 参数不能为null,或没有项目
|
||
var enumerable = options as ComboxColumn.Option[] ?? options.ToArray();
|
||
Debug.Assert(enumerable != null);
|
||
Debug.Assert(enumerable.Any());
|
||
|
||
ControlName = controlName;
|
||
Options = enumerable;
|
||
|
||
// 修复兼容性问题
|
||
initValue = CorrectValue(initValue);
|
||
|
||
// 检查Recipe中保存的值是否在Options中定义?
|
||
// 如果没有定义,则取默认值。
|
||
ComboxColumn.Option selected;
|
||
if (!string.IsNullOrEmpty(initValue) &&
|
||
Options.FirstOrDefault(x => x.Equals(initValue)) != null)
|
||
{
|
||
// 注意:Recipe中保存的是ControlName,编辑器中应显示DisplayName
|
||
selected = Options.First(x => x.Equals(initValue));
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(defaultValue) &&
|
||
Options.Any(x => x.Equals(defaultValue)))
|
||
selected = Options.First(x => x.Equals(defaultValue));
|
||
else
|
||
selected = Options.First();
|
||
}
|
||
|
||
_value = selected;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region Properties
|
||
|
||
public IEnumerable<ComboxColumn.Option> Options { get; }
|
||
|
||
private bool _isEditable;
|
||
public bool IsEditable
|
||
{
|
||
get => _isEditable;
|
||
set => Set(ref _isEditable, value);
|
||
}
|
||
|
||
private string _foreground = "Black";
|
||
public string Foreground
|
||
{
|
||
get => _foreground;
|
||
set => Set(ref _foreground, value);
|
||
}
|
||
public string LoopBackground => "Transparent";
|
||
|
||
public bool IsLoopItem => false;
|
||
|
||
#endregion
|
||
|
||
#region Methods
|
||
|
||
/// <summary>
|
||
/// 修正当前参数的值,解决兼容性问题。
|
||
/// <para>
|
||
/// 1、PSU和SCR控制策略为Pyro时,变更为PyroFollow。
|
||
/// </para>
|
||
/// </summary>
|
||
/// <param name="initValue"></param>
|
||
/// <returns></returns>
|
||
private string CorrectValue(string initValue)
|
||
{
|
||
if (ControlName == "TC1.SetHeaterMode" || ControlName == "TC2.SetHeaterMode2")
|
||
{
|
||
// 处理TC兼容性问题
|
||
if (initValue == "Pyro" || initValue == HeatStrategy.PyroFollow.ToString() || initValue == "1")
|
||
return "Follow";
|
||
|
||
if (initValue == HeatStrategy.PyroAuto.ToString() || initValue == "2")
|
||
return "Auto";
|
||
|
||
if (initValue == HeatStrategy.Power.ToString() || initValue == "0")
|
||
return "Power";
|
||
}
|
||
|
||
return initValue;
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
}
|