| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using Prism.Commands;
- using Prism.Mvvm;
- using Prism.Services.Dialogs;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using TeamAAS_VP.Interfaces;
- using TeamAAS_VP.Models;
- using TeamAAS_VP.Models.Lights;
- using TeamAAS_VP.Models.PLC;
- using TeamAAS_VP.Resources.Languages;
- namespace TeamAAS_VP.ViewModels.Product
- {
- public class LightChannelListViewModel : BindableBase, IDialogAware
- {
- private readonly IConfigService _configService;
- private ObservableCollection<ChannelConfigEx> _AllLightChannels;
- public ObservableCollection<ChannelConfigEx> AllLightChannels
- {
- get { return _AllLightChannels; }
- set { SetProperty(ref _AllLightChannels, value); }
- }
- private DelegateCommand _ConfirmCommand;
- public DelegateCommand ConfirmCommand =>
- _ConfirmCommand ?? (_ConfirmCommand = new DelegateCommand(ExecuteConfirmCommand));
- private DelegateCommand _CancelCommand;
- public DelegateCommand CancelCommand =>
- _CancelCommand ?? (_CancelCommand = new DelegateCommand(ExecuteCancelCommand));
- public LightChannelListViewModel(IConfigService configService)
- {
- _configService = configService;
- }
- void ExecuteConfirmCommand()
- {
- //获取所有选择的通道
- var selectedChannels = AllLightChannels.Where(c => c.IsSelected).ToArray();
- //将通道配置扩展转换为通道配置
- ChannelConfig[] Channels = selectedChannels.Select(c => c.ToChannelConfig()).ToArray();
- IDialogParameters parameters = new DialogParameters();
- parameters.Add("Channels", Channels);
- RequestClose?.Invoke(new DialogResult(ButtonResult.OK, parameters));
- }
- /// <summary>
- /// 取消按钮
- /// </summary>
- void ExecuteCancelCommand()
- {
- RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel, null));
- }
- public string Title { get; set; } = Lang.添加机器人;
- public event Action<IDialogResult> RequestClose;
- public bool CanCloseDialog()
- {
- return true;
- }
- public void OnDialogClosed()
- {
- }
- public void OnDialogOpened(IDialogParameters parameters)
- {
- Title = Lang.选择要使用的光源通道;
- ChannelConfig[] channels=parameters.GetValue<ChannelConfig[]>("Channels");
- AllLightChannels =new ObservableCollection<ChannelConfigEx>();
- var allChanels = _configService.GetAllLightChannels();
- foreach (var item in allChanels)
- {
- AllLightChannels.Add(new ChannelConfigEx(item));
- }
- //设置已选择的通道
- foreach (var channel in channels)
- {
- var exist = AllLightChannels.FirstOrDefault(c => c.GlobalIndex == channel.GlobalIndex);
- if (exist != null)
- {
- exist.IsSelected = true;
- }
- }
- }
- }
- }
|