SIC-12/Framework/MECF.Framework.UI.Client/RecipeEditorLib/RecipeModel/Params/ComboxParam.cs

103 lines
3.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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