Преглед на файлове

添加TMCycle动画(部分)

lixiang преди 2 години
родител
ревизия
7419cea99a

+ 7 - 17
Venus/Venus_MainPages/ViewModels/IOViewModel.cs

@@ -18,6 +18,7 @@ namespace Venus_MainPages.ViewModels
     public class IOViewModel : BindableBase
     {
         #region 私有属性
+        public string ModuleName;
         private Dictionary<string, IOItem<bool>> _diMap = new Dictionary<string, IOItem<bool>>();
         private Dictionary<string, IOItem<bool>> _doMap = new Dictionary<string, IOItem<bool>>();
         private Dictionary<string, IOItem<float>> _aiMap = new Dictionary<string, IOItem<float>>();
@@ -28,7 +29,7 @@ namespace Venus_MainPages.ViewModels
         private ObservableCollection<IOItem<bool>> m_DIs = new ObservableCollection<IOItem<bool>>();
         private ObservableCollection<IOItem<bool>> m_DOs = new ObservableCollection<IOItem<bool>>();
 
-        private string m_SystemName;
+        
 
         #endregion
 
@@ -54,17 +55,6 @@ namespace Venus_MainPages.ViewModels
             set { SetProperty(ref m_DOs, value); }
         }
 
-        public string SystemName
-        {
-            get { return m_SystemName; }
-            set 
-            {
-
-                m_SystemName = value;
-                BuildIoSchema();
-
-            }
-        }
         #endregion
 
         #region 命令
@@ -94,7 +84,7 @@ namespace Venus_MainPages.ViewModels
             timer.Tick += timer_Tick;
             timer.Start();
 
-     
+            BuildIoSchema();
 
         }
         void timer_Tick(object sender, EventArgs e)
@@ -116,7 +106,7 @@ namespace Venus_MainPages.ViewModels
         {
             if (DIs.Count == 0)
             {
-                var itemList = QueryDataClient.Instance.Service.GetData($"{SystemName}.PLC.DIItemList");
+                var itemList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.PLC.DIItemList");
 
                 if (itemList != null)
                 {
@@ -137,7 +127,7 @@ namespace Venus_MainPages.ViewModels
             }
             if (DOs.Count == 0)
             {
-                var itemList = QueryDataClient.Instance.Service.GetData($"{SystemName}.PLC.DOItemList");
+                var itemList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.PLC.DOItemList");
 
                 if (itemList != null)
                 {
@@ -159,7 +149,7 @@ namespace Venus_MainPages.ViewModels
             }
             if (AIs.Count == 0)
             {
-                var itemList = QueryDataClient.Instance.Service.GetData($"{SystemName}.PLC.AIItemList");
+                var itemList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.PLC.AIItemList");
 
                 if (itemList != null)
                 {
@@ -180,7 +170,7 @@ namespace Venus_MainPages.ViewModels
             }
             if (AOs.Count == 0)
             {
-                var itemList = QueryDataClient.Instance.Service.GetData($"{SystemName}.PLC.AOItemList");
+                var itemList = QueryDataClient.Instance.Service.GetData($"{ModuleName}.PLC.AOItemList");
 
                 if (itemList != null)
                 {

+ 8 - 4
Venus/Venus_MainPages/ViewModels/MFCVerificationViewModel.cs

@@ -250,12 +250,16 @@ namespace Venus_MainPages.ViewModels
         {
             MFCVerificationPoints.Clear();
             MFCData = (AITMfcData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.MfcGas{(GasSelectedIndex + 1).ToString()}");
-            int delta1 = (int)MFCData.Scale / 10;
-            for (int i = 0; i < 10; i++)
+            if ( MFCData != null ) 
             {
-                MFCVerificationPoints.Add(delta1 + delta1 * i);
+                int delta1 = (int)MFCData.Scale / 10;
+                for (int i = 0; i < 10; i++)
+                {
+                    MFCVerificationPoints.Add(delta1 + delta1 * i);
+                }
+                PointsSelectedIndex = 0;
             }
-            PointsSelectedIndex = 0;
+            
         }
         #endregion
 

+ 1 - 6
Venus/Venus_MainPages/ViewModels/PartialPressureViewModel.cs

@@ -26,7 +26,7 @@ namespace Venus_MainPages.ViewModels
         private Dictionary<int, object> m_GasFlows = new Dictionary<int, object>();
         private object[] m_GasPressures = new object[10];
 
-        private string m_ModuleName = "PMA";
+        public string ModuleName;
         private int m_GasIndex;
         ChartValues<double> m_CurrentLineSeries= new ChartValues<double>();
         ChartValues<double> m_ReferenceLineSeries = new ChartValues<double>();
@@ -45,11 +45,6 @@ namespace Venus_MainPages.ViewModels
             get { return m_ReferenceFlow; }
             set { SetProperty(ref m_ReferenceFlow, value); }
         }
-        public string ModuleName
-        {
-            get { return m_ModuleName; }
-            set { SetProperty(ref m_ModuleName, value); }
-        }
         public Dictionary<int, object> GasFlows
         {
             get { return m_GasFlows; }

+ 1 - 1
Venus/Venus_MainPages/ViewModels/RFCalibrationViewModel.cs

@@ -19,7 +19,7 @@ namespace Venus_MainPages.ViewModels
     {
         #region 字段
         public ObservableCollection<CalibrationTableItem> m_CalibrationItems=new ObservableCollection<CalibrationTableItem>();
-        public string ModuleName { get; set; }
+        public string ModuleName;
         private CalibrationTableItem m_CurrentSelection;
         public AITRfData rf;
         private string _GeneratorSerialNumber;

+ 12 - 58
Venus/Venus_MainPages/ViewModels/RecipeViewModel.cs

@@ -32,7 +32,7 @@ namespace Venus_MainPages.ViewModels
         #region 私有字段
         private string m_Title;
        
-        public string m_chamId = "PMA";
+        public string ModuleName = "PMA";
         private string m_CurrentRecipeName;
 
 
@@ -175,7 +175,7 @@ namespace Venus_MainPages.ViewModels
             try
             {
                 CurrentRecipeName = selectedItem.FileName;
-                string xmlRecipeData = m_uiRecipeManager.LoadRecipe(m_chamId, selectedItem.FileName);
+                string xmlRecipeData = m_uiRecipeManager.LoadRecipe(ModuleName, selectedItem.FileName);
                 if (xmlRecipeData == "")
                 {
                     treeViewRcpList.Items.Remove(selectedItem);
@@ -202,7 +202,7 @@ namespace Venus_MainPages.ViewModels
         /// <returns></returns>
         public string LoadRecipe(string receipeName)
         {
-            return m_uiRecipeManager.LoadRecipe(m_chamId, receipeName);
+            return m_uiRecipeManager.LoadRecipe(ModuleName, receipeName);
         }
 
         /// <summary>
@@ -213,7 +213,7 @@ namespace Venus_MainPages.ViewModels
         /// <returns></returns>
         public bool SaveRecipe(string recipeName, string recipeContent)
         {
-            return m_uiRecipeManager.SaveRecipe(m_chamId, recipeName, recipeContent);
+            return m_uiRecipeManager.SaveRecipe(ModuleName, recipeName, recipeContent);
         }
 
         /// <summary>
@@ -281,9 +281,9 @@ namespace Venus_MainPages.ViewModels
                     RecipeType type = (RecipeType)Enum.Parse(typeof(RecipeType), dlg.SelectedType);
                     string newRecipe =RecipeUnity.CreateRecipe(type, dlg.InputText);
 
-                    //string recipeContent = m_uiRecipeManager.GetRecipeTemplate(m_chamId);
+                    //string recipeContent = m_uiRecipeManager.GetRecipeTemplate(ModuleName);
 
-                    //m_uiRecipeManager.SaveAsRecipe(m_chamId, recipeName, m_uiRecipeManager.LoadRecipe("system",folderName));
+                    //m_uiRecipeManager.SaveAsRecipe(ModuleName, recipeName, m_uiRecipeManager.LoadRecipe("system",folderName));
                     if (SaveAsRecipe(recipeName, newRecipe))
                     {
                         //UpdateRecipeFileList();
@@ -320,7 +320,7 @@ namespace Venus_MainPages.ViewModels
             {
                 MenuItem mit = sender as MenuItem;
                 //string recipename = mit.Header.ToString();
-                m_uiRecipeManager.DeleteRecipe(m_chamId, CurrentRecipeName);
+                m_uiRecipeManager.DeleteRecipe(ModuleName, CurrentRecipeName);
                 //PerformCreateRecipe(folderName);
                 treeViewRcpList.Items.Remove(selectedItem);
             }
@@ -362,8 +362,8 @@ namespace Venus_MainPages.ViewModels
             var newName= Interaction.InputBox("Rename Recipe", "", CurrentRecipeName, -1, -1);
             if (newName != CurrentRecipeName && newName!="")
             {
-                var oldrecipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", m_chamId, CurrentRecipeName + ".rcp");
-                var newrecipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", m_chamId, newName + ".rcp");
+                var oldrecipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, CurrentRecipeName + ".rcp");
+                var newrecipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, newName + ".rcp");
                 CurrentRecipe.Header.Name = newName;
                 SaveRecipe(CurrentRecipeName, RecipeUnity.RecipeToString(CurrentRecipe));
                 File.Move(oldrecipePath, newrecipePath);
@@ -381,7 +381,7 @@ namespace Venus_MainPages.ViewModels
         /// <returns></returns>
         public bool SaveAsRecipe(string recipeName, string recipeContent)
         {
-            return m_uiRecipeManager.SaveAsRecipe(m_chamId, recipeName, recipeContent);
+            return m_uiRecipeManager.SaveAsRecipe(ModuleName, recipeName, recipeContent);
         }
         /// <summary>
         /// Recipe template
@@ -390,7 +390,7 @@ namespace Venus_MainPages.ViewModels
         {
             get
             {
-                string template = m_uiRecipeManager.GetRecipeTemplate(m_chamId);
+                string template = m_uiRecipeManager.GetRecipeTemplate(ModuleName);
                 return template;
             }
         }
@@ -409,7 +409,7 @@ namespace Venus_MainPages.ViewModels
         /// <returns></returns>
         public string GetXmlRecipeList()
         {
-            return m_uiRecipeManager.GetXmlRecipeList(m_chamId, true) ?? "";
+            return m_uiRecipeManager.GetXmlRecipeList(ModuleName, true) ?? "";
         }
 
         void CreateTreeViewItems(XmlElement curElementNode, ItemsControl itemsControl)
@@ -437,52 +437,6 @@ namespace Venus_MainPages.ViewModels
                 }
             }
         }
-
-        //void SelectRecipe(string recipeName)
-        //{
-        //    try
-        //    {
-        //        string[] paths = recipeName.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
-        //        string fileName = "";
-        //        for (int i = 0; i < paths.Length - 1; i++)
-        //            fileName += paths[i] + "\\";
-        //        fileName += paths[paths.Length - 1];
-        //        selectRecipe(treeViewRcpList, paths, 0, fileName);
-        //    }
-        //    catch (Exception ex)
-        //    {
-        //        LOG.WriteExeption(ex);
-        //    }
-        //}
-
-        //ItemsControl selectRecipe(ItemsControl currentNode, string[] paths, int index, string fileName)
-        //{
-        //    if (currentNode == null)
-        //        return null;
-        //    if (index == paths.Length - 1)
-        //    {
-        //        foreach (var item in currentNode.Items)
-        //        {
-        //            TreeViewFileItem tvf = item as TreeViewFileItem;
-        //            if (tvf != null && tvf.FileName == fileName)
-        //            {
-        //                tvf.IsSelected = true;
-        //                return null;
-        //            }
-        //        }
-        //    }
-        //    foreach (var item in currentNode.Items)
-        //    {
-        //        TreeViewFolderItem tvf = item as TreeViewFolderItem;
-        //        if (tvf != null && tvf.FolderName == paths[index])
-        //        {
-        //            tvf.IsExpanded = true;
-        //            selectRecipe(tvf, paths, index + 1, fileName);
-        //            break;
-        //        }
-        //    }
-        //    return null;
-        //}
         #endregion
     }
 }

+ 15 - 2
Venus/Venus_MainPages/ViewModels/TMViewModel.cs

@@ -708,8 +708,10 @@ namespace Venus_MainPages.ViewModels
         public DelegateCommand AbortCommand =>
             _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
 
-       
-
+        private DelegateCommand _StartCycleCommand;
+        public DelegateCommand StartCycleCommand =>
+            _StartCycleCommand ?? (_StartCycleCommand = new DelegateCommand(OnStartCycle));
+        
         #endregion
 
         #region 构造函数
@@ -1018,6 +1020,17 @@ namespace Venus_MainPages.ViewModels
         {
             InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Abort}");
         }
+        private void OnStartCycle()
+        {
+            List<string> strings = new List<string>();
+            strings.Add("LLA");
+            strings.Add("PMA");
+            strings.Add("LLB");
+
+
+            InvokeClient.Instance.Service.DoOperation($"TMCycle", strings.ToArray(),5);
+
+        }
         #endregion
 
         #region 私有方法

+ 1 - 6
Venus/Venus_MainPages/ViewModels/VATPerformanceViewModel.cs

@@ -20,7 +20,7 @@ namespace Venus_MainPages.ViewModels
         private int m_GasTime;
 
         private int m_GasSelectedIndex;
-        private string m_ModuleName = "PMA";
+        public string ModuleName;
         ChartValues<double> m_CurrentLineSeries = new ChartValues<double>();
         ChartValues<double> m_ReferenceLineSeries = new ChartValues<double>();
         DispatcherTimer timer = new DispatcherTimer();
@@ -28,11 +28,6 @@ namespace Venus_MainPages.ViewModels
         #endregion
 
         #region 属性
-        public string ModuleName
-        {
-            get { return m_ModuleName; }
-            set { SetProperty(ref m_ModuleName, value); }
-        }
 
         public int GasFlow
         {

+ 1 - 1
Venus/Venus_MainPages/Views/GasLeakCheckView.xaml.cs

@@ -25,7 +25,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             (this.DataContext as GasLeakCheckViewModel).ModuleName = systemName;
             (this.DataContext as GasLeakCheckViewModel).addDataKeys();

+ 3 - 2
Venus/Venus_MainPages/Views/IOView.xaml.cs

@@ -26,9 +26,10 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
-            (this.DataContext as IOViewModel).SystemName = systemName;
+            (this.DataContext as IOViewModel).ModuleName = systemName;
+            (this.DataContext as IOViewModel).BuildIoSchema();
         }
     }
     public class DisplayNameConverter : IValueConverter

+ 1 - 1
Venus/Venus_MainPages/Views/MFCVerificationView.xaml.cs

@@ -25,7 +25,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             (this.DataContext as MFCVerificationViewModel).ModuleName = systemName;
             (this.DataContext as MFCVerificationViewModel).Init();

+ 1 - 1
Venus/Venus_MainPages/Views/OverView.xaml.cs

@@ -14,7 +14,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             (this.DataContext as OverViewModel).ModuleName = systemName;
             (this.DataContext as OverViewModel).addDataKeys();

+ 1 - 1
Venus/Venus_MainPages/Views/PartialPressureView.xaml.cs

@@ -25,7 +25,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             (this.DataContext as PartialPressureViewModel).ModuleName = systemName;
             (this.DataContext as PartialPressureViewModel).Init();

+ 1 - 1
Venus/Venus_MainPages/Views/RFCalibrationView.xaml.cs

@@ -26,7 +26,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             ((this.DataContext) as RFCalibrationViewModel).ModuleName = systemName;
         }

+ 2 - 2
Venus/Venus_MainPages/Views/RecipeView.xaml.cs

@@ -25,9 +25,9 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
-            (this.DataContext as RecipeViewModel).m_chamId = systemName;
+            (this.DataContext as RecipeViewModel).ModuleName = systemName;
         }
     }
 }

+ 1 - 1
Venus/Venus_MainPages/Views/TMView.xaml

@@ -295,7 +295,7 @@
                             <CheckBox Content="PMD" Margin="0,10,10,10" Visibility="{Binding PMDIsInstalled,Converter={StaticResource bool2VisibilityConverter}}"/>
                         </StackPanel>
                         <StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center">
-                            <Button Content="Start"  Margin="0,0,10,10"  Width="80" Height="25"/>
+                            <Button Content="Start"  Margin="0,0,10,10"  Width="80" Height="25" Command="{Binding StartCycleCommand}"/>
                             <Button Content="Stop"   Margin="10,0,10,10" Width="80" Height="25"/>
                             <Button Content="Pause"  Margin="10,0,10,10" Width="80" Height="25"/>
                             <Button Content="Resume" Margin="10,0,0,10"  Width="80" Height="25"/>

+ 0 - 4
Venus/Venus_MainPages/Views/TMView.xaml.cs

@@ -50,10 +50,6 @@ namespace Venus_MainPages.Views
         {
             robot.RobotXAction = WaferRobotXAction.Extend;
         }
-        public void SetSystemName(string systemName)
-        {
-
-        }
         private void XCCWButton_Click(object sender, RoutedEventArgs e)
         {
             robot.RobotXAction = WaferRobotXAction.Retract;

+ 1 - 1
Venus/Venus_MainPages/Views/VATPerformanceView.xaml.cs

@@ -12,7 +12,7 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
-        public void SetSystemName(string systemName)
+        public void Init(string systemName)
         {
             (this.DataContext as VATPerformanceViewModel).ModuleName = systemName;
         }

+ 1 - 1
Venus/Venus_RT/Devices/VirgoSignalTower.cs

@@ -94,7 +94,7 @@ namespace Venus_RT.Devices
 
                     break;
             }
-            EfemController?.SetLamp(venusType, venusSetpoint);
+            //EfemController?.SetLamp(venusType, venusSetpoint);
             _SignalTower.SetLight(venusType, lightState);
             return true;
         }

+ 33 - 2
Venus/Venus_RT/Modules/TM/TMEntity.cs

@@ -64,6 +64,7 @@ namespace Venus_RT.Modules
             PMSwap,
             Extend,
             Retract,
+            TMCycle,
             Error,
             Abort,
         }
@@ -108,8 +109,12 @@ namespace Venus_RT.Modules
         private readonly MFPMPlaceRoutine _pmPlaceRoutine;
         private readonly MFPMSwapRoutine _pmSwapRoutine;
 
+
         private readonly MFPMRetractRoutine _pmRetractRoutine;
         private readonly MFPMExtendRoutine  _pmExtendRoutine;
+
+        //private readonly TMCycle _TMCycle;
+
         public TMEntity()
         {
             _tm                 = Singleton<JetTM>.Instance;
@@ -129,9 +134,14 @@ namespace Venus_RT.Modules
             _leakCheckRoutine   = new MFLeakCheckRoutine(_tm, ModuleName.TM);
             _purgeRoutine       = new MFPurgeRoutine(_tm, ModuleName.TM);
 
+
+
             _pmRetractRoutine = new MFPMRetractRoutine(_tm, _robot);
             _pmExtendRoutine  = new MFPMExtendRoutine(_tm, _robot);
 
+            //_TMCycle = new TMCycle();
+
+
             WaferManager.Instance.SubscribeLocation(ModuleName.TM, 2);
 
             InitFsmMap();
@@ -148,7 +158,7 @@ namespace Venus_RT.Modules
             OP.Subscribe($"TM.{RtOperation.Extend}", (cmd, args) => CheckToPostMessage((int)MSG.Extend, args));
             OP.Subscribe($"TM.{RtOperation.Retract}", (cmd, args) => CheckToPostMessage((int)MSG.Retract, args));
 
-            
+            OP.Subscribe($"TM.{RtOperation.Cycle}", (cmd, args) => CheckToPostMessage((int)MSG.Swap, args));
 
             //OP.Subscribe($"TM.{RtOperation.LLPlace}", (cmd, args) => CheckToPostMessage((int)MSG.Place, args));
             OP.Subscribe($"TM.{RtOperation.Pump}", (cmd, args) => CheckToPostMessage((int)MSG.Pump));
@@ -157,6 +167,9 @@ namespace Venus_RT.Modules
             OP.Subscribe($"TM.{RtOperation.Purge}", (cmd, args) => CheckToPostMessage((int)MSG.Purge));
             OP.Subscribe($"TM.{RtOperation.Abort}", (cmd, args) => CheckToPostMessage((int)MSG.Abort));
 
+            OP.Subscribe("TMCycle", (cmd, args) => CheckToPostMessage((int)MSG.TMCycle, args));
+
+
 
 
             DATA.Subscribe("TM.FsmState", () => (((STATE)fsm.State).ToString()));
@@ -251,6 +264,9 @@ namespace Venus_RT.Modules
             Transition(STATE.Extending,         FSM_MSG.TIMER,      FnExtend,           STATE.Idle);
             Transition(STATE.Extending,         MSG.Abort,          FnAbortExtend,      STATE.Idle);
 
+            //Transition(RtState.Init, MSG.TMCycle, FsmStartTMCycle, RtState.TMCycle);
+            //Transition(RtState.TMCycle, FSM_MSG.TIMER, FsmMonitorTMCycle, RtState.Idle);
+
 
             Running = true;
         }
@@ -615,7 +631,22 @@ namespace Venus_RT.Modules
         {
             return _tm.TurnEFEMSlitDoor(loadlock, open, out reason);
         }
-
+        //private bool FsmStartTMCycle(object[] objs)
+        //{
+        //    return _TMCycle.Start(objs) == RState.Running;
+        //}
+
+        //private bool FsmMonitorTMCycle(object[] objs)
+        //{
+        //    RState ret = _TMCycle.Monitor();
+        //    if (ret == RState.Failed || ret == RState.Timeout)
+        //    {
+        //        PostMsg(MSG.Error);
+        //        return false;
+        //    }
+
+        //    return ret == RState.End;
+        //}
         private void _debugRoutine()
         {
             int flag = 0;

+ 4 - 11
Venus/Venus_UI/Views/ShellView.xaml.cs

@@ -85,21 +85,14 @@ namespace Venus_UI.Views
                     }
                     string className = $"Venus_MainPages.Views.{VenusMenu[i].MenuItem[j].View}";
                     Type t = Type.GetType($"{className},Venus_MainPages");
+                    var obj = System.Activator.CreateInstance(t);
 
                     if (VenusMenu[i].Id=="PMA" || VenusMenu[i].Id == "PMB" || VenusMenu[i].Id == "PMC" || VenusMenu[i].Id == "PMD" || VenusMenu[i].Id == "TM")
                     {
-                        var obj = System.Activator.CreateInstance(t); 
-                        MethodInfo methodInfo = t.GetMethod("SetSystemName", new Type[] { typeof(string) });
-                        methodInfo.Invoke(obj, new object[] { VenusMenu[i].Id });
-                        tabControl.Items.Add(new TabItem() { Header = VenusMenu[i].MenuItem[j].Name, Content = obj });
+                        MethodInfo methodInfo = t.GetMethod("Init", new Type[] { typeof(string) });
+                        methodInfo?.Invoke(obj, new object[] { VenusMenu[i].Id });
                     }
-                    else
-                    { 
-                    tabControl.Items.Add(new TabItem() { Header = VenusMenu[i].MenuItem[j].Name, Content = Activator.CreateInstance(t) });
-
-                    }
-
-
+                    tabControl.Items.Add(new TabItem() { Header = VenusMenu[i].MenuItem[j].Name, Content = obj });
                 }
                 centerTabViews.Add(tabControl);
             }