using Aitex.Core.RT.SCCore; using Caliburn.Micro; using Caliburn.Micro.Core; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.RecipeCenter; using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; using FurnaceUI.Views.Parameter; using FurnaceUI.Views.Recipes; using System.Windows.Controls; using System.Windows.Media; namespace FurnaceUI.Views.Editors { public class RecipePressCommandViewModel : FurnaceUIViewModelBase { private Dictionary boatCmd = new Dictionary(); public bool IsSave { get; set; } public string SelectedCmd { get; set; } private string _description = ""; public string Description { get => _description; set { _description = value; NotifyOfPropertyChange(nameof(Description)); } } public string ReturnString { get; set; } = ""; public RecipePressCommandViewModel() { //CreateRadioButton(); } public void RdoChecked(string cmd, object sender) { if (sender is RadioButton) { ReturnString = cmd; //switch (cmd) //{ // default: // break; //} } } //private void CreateRadioButton() //{ // boatCmd.Clear(); // boatCmd.Add("Boat Load", "The boat is loaded in the furnace.(Speed set avai lable)"); // boatCmd.Add("Boat Unload", "The boat is unloaded f rom the furnace.(Speed set available)"); // boatCmd.Add("Boat Loader Home", "Boat Loader ismoved to the home position."); // boatCmd.Add("Boat Rotate", "The boat is rotated."); // boatCmd.Add("Boat Rotate Stop", "The rotat ion of the boat is stopped and R-axis is moved to the home position."); // boatCmd.Add("Boat CAP2", "Boat Loader is moved to CAP2 position.(CAP2 : CAP position in condition to not seal the reactor)"); // boatCmd.Add("Stop(Include R-axis)", "Boat Loader is stopped. (Include R-axis."); //} public void RdoChecked(object sender) { Description = boatCmd[(string)((RadioButton)sender).Content]; if ((bool)((RadioButton)sender).IsChecked) { ReturnString = (string)((RadioButton)sender).Content; } } public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 public string RecipeType { get; set; } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); LoadData(view); } private void LoadData(object view) { if (!string.IsNullOrEmpty(SelectedCmd) ) { var pressCmdView = (RecipePressCommandView)view; RadioButton radioButton = GetChildObject(pressCmdView, SelectedCmd.Replace(" ","")); if (radioButton != null) { radioButton.IsChecked = true; } } ReturnString = SelectedCmd; } /// /// 查找子控件 /// /// 子控件的类型 /// 要找的是obj的子控件 /// 想找的子控件的Name属性 /// 目标子控件 public static T GetChildObject(DependencyObject obj, string name) where T : FrameworkElement { DependencyObject child = null; T grandChild = null; for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++) { child = VisualTreeHelper.GetChild(obj, i); if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name))) { return (T)child; } else { // 在下一级中没有找到指定名字的子控件,就再往下一级找 grandChild = GetChildObject(child, name); if (grandChild != null) return grandChild; } } return null; } public void TempSetSave() { IsSave = true; ((Window)GetView()).DialogResult = true; } public void TempSetCancel() { IsSave = false; ((Window)GetView()).DialogResult = false; } } }