using AIK.Common.Language; using AIK.Models; using AIK.Models.Menus; using AIK.Models.UtilsModels.Step; using AIK.Service.IService; using AIK.ViewModels.CommonViewModel; using AIK.ViewModels.Messages; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics.Metrics; using System.Linq; using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; using System.Windows.Media.Media3D; using System.Xml.Linq; namespace AIK.ViewModels.RemoteCopy { public partial class RemoteCopyViewModel : ObservableObject { [ObservableProperty] private ObservableCollection steps = new(); private int _currentStepIndex = 0; public int CurrentStepIndex { get => _currentStepIndex; set { if (SetProperty(ref _currentStepIndex, value)) { UpdateStepActivation(); } } } [ObservableProperty] private string _tipsMessage; #region 初始化 public RemoteCopyViewModel() { InitializeSteps(); } private void InitializeSteps() { Steps.Clear(); Steps.Add(new StepItem(AiKLanguage.LanguageKey.GetValueOrDefault("Lock"), "\ue628")); Steps.Add(new StepItem(AiKLanguage.LanguageKey.GetValueOrDefault("Unlock"), "\ue681")); Steps.Add(new StepItem(AiKLanguage.LanguageKey.GetValueOrDefault("Trunk"), "\ue6ea")); Steps.Add(new StepItem(AiKLanguage.LanguageKey.GetValueOrDefault("Panic"), "\ue699", true)); UpdateStepActivation(); } private void UpdateStepActivation() { Application.Current.Dispatcher.Invoke(() => { for (int i = 0; i < Steps.Count; i++) { Steps[i].IsActive = (i == CurrentStepIndex); } UpdateTipMessage(); }); } private void UpdateTipMessage() { string m = Steps[CurrentStepIndex].StepName; TipsMessage = $"{AiKLanguage.LanguageKey.GetValueOrDefault("PleasePress")}【{m}】{AiKLanguage.LanguageKey.GetValueOrDefault("Button")}"; } #endregion #region 页面方法 [RelayCommand] private void NextStep() { if (CurrentStepIndex < Steps.Count - 1) { CurrentStepIndex++; } } [RelayCommand] private void PreviousStep() { if (CurrentStepIndex > 0) { CurrentStepIndex--; } } [RelayCommand] private void Reset() { CurrentStepIndex = 0; } #endregion } }