using MahApps.Metro.Controls; using Prism.Commands; using Prism.Events; using Prism.Ioc; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows.Controls; using Team.FFFeederService; using TeamAAS_VP.Core; using TeamAAS_VP.Events; using TeamAAS_VP.Interfaces; using TeamAAS_VP.Models; using TeamAAS_VP.Models.Lights; using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window; namespace TeamAAS_VP.ViewModels { public class DebugViewModel : BindableBase, IConfirmNavigationRequest { #region 字段 IRegionManager _regionManager; IEventAggregator _eventAggregator; IContainerProvider _container; IDialogService _dialogService; IConfigService _configService; #endregion #region 属性 private Management _management; public Management management { get { return _management; } set { SetProperty(ref _management, value); } } private RobotInfo _SelectRobot; /// /// 选中的机器人 /// public RobotInfo SelectRobot { get { return _SelectRobot; } set { SetProperty(ref _SelectRobot, value); } } private FeederInfo _SelectFeeder; /// /// 选中的Feeder /// public FeederInfo SelectFeeder { get { return _SelectFeeder; } set { SetProperty(ref _SelectFeeder, value); } } private ObservableCollection _RobotList; public ObservableCollection RobotList { get { return _RobotList; } set { SetProperty(ref _RobotList, value); } } private ObservableCollection _FeederList; public ObservableCollection FeederList { get { return _FeederList; } set { SetProperty(ref _FeederList, value); } } //光源控制器的通道集合 private ObservableCollection _LightChannelController; public ObservableCollection LightChannelController { get { return _LightChannelController; } set { SetProperty(ref _LightChannelController, value); } } #endregion #region 命令 public DelegateCommand LoadedCommand { get; set; } private DelegateCommand _SelectItemCommand; public DelegateCommand SelectItemCommand => _SelectItemCommand ?? (_SelectItemCommand = new DelegateCommand(ExecuteSelectItemCommand)); void ExecuteSelectItemCommand() { } #endregion #region 事件 #endregion public DebugViewModel(IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, IDialogService dialogService, IConfigService configService) { _regionManager = regionManager; _eventAggregator = ea; _container = container; _dialogService = dialogService; _configService = configService; management = _container.Resolve(); LoadedCommand = new DelegateCommand(OnLoad); //订阅权限登录事件 _eventAggregator.GetEvent().Subscribe(LoginChange); } #region 方法 private void OnLoad() { } public void TreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs e) { try { // 获取其 DataContext if (e.NewValue is RobotInfo) { SelectRobot = e.NewValue as RobotInfo; NavigationParameters keyValues = new NavigationParameters(); keyValues.Add("RobotInfo", SelectRobot); _regionManager.RequestNavigate("DebugRegionContext", "RobotManualStep", keyValues); } else if (e.NewValue is FeederInfo) { SelectFeeder = e.NewValue as FeederInfo; NavigationParameters keyValues = new NavigationParameters(); keyValues.Add("FeederInfo", SelectFeeder); if (SelectFeeder != null && SelectFeeder.FeederBrand == FeederBrand.TEAM) { _regionManager.RequestNavigate("DebugRegionContext", "FeederManual", keyValues); } else if (SelectFeeder != null && SelectFeeder.FeederBrand == FeederBrand.AFAG) { _regionManager.RequestNavigate("DebugRegionContext", "AfagFeederManual", keyValues); } } else if (e.NewValue is TreeViewItem && ((TreeViewItem)(e.NewValue)).Name == "FocusAnalyzer") { _regionManager.RequestNavigate("DebugRegionContext", "FocusAnalyzer"); } else if (e.NewValue is TreeViewItem && ((TreeViewItem)(e.NewValue)).Name == "InchingControl") { _regionManager.RequestNavigate("DebugRegionContext", "InchingControl"); } else if (e.NewValue is TreeViewItem && ((TreeViewItem)(e.NewValue)).Name == "Script") { _regionManager.RequestNavigate("DebugRegionContext", "ScriptHome"); } else if (e.NewValue is TreeViewItem && ((TreeViewItem)(e.NewValue)).Name == "LightController") { _regionManager.RequestNavigate("DebugRegionContext", "LightManual"); } else if (e.NewValue is TreeViewItem && ((TreeViewItem)(e.NewValue)).Name == "FeederClear") { _regionManager.RequestNavigate("DebugRegionContext", "FeederClear"); } } catch (Exception) { } } #endregion #region 继承 /// /// 确认导航请求时调用。此方法允许您在导航之前执行一些操作。 /// /// /// public void ConfirmNavigationRequest(NavigationContext navigationContext, Action continuationCallback) { continuationCallback(true); } /// /// 接收导航请求时调用。传入导航参数,包含有关导航目标的信息。 /// /// /// public async void OnNavigatedTo(NavigationContext navigationContext) { if (RobotList == null) { var robots = _configService.GetAllRobots(); RobotList = new ObservableCollection(robots); } if (FeederList == null) { var feeders = _configService.GetAllFeeders(); FeederList = new ObservableCollection(feeders); } if (LightChannelController == null) { var lights = _configService.GetAllLightChannels(); LightChannelController=new ObservableCollection(lights); } } /// /// 是否允许导航到此视图模型。 /// /// /// public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } /// /// 导航离开此视图模型时调用。您可以在此处执行清理操作或保存状态。 /// /// public void OnNavigatedFrom(NavigationContext navigationContext) { } #endregion private void LoginChange(Models.User user) { } } }