using System; using System.Collections.Generic; using System.Linq; using TranslateTool.Managers; using TranslateTool.Model; namespace TranslateTool.ViewModel { public class HandleRepaetItemPageViewModel:ViewModel { private readonly List _items; private readonly string _languageName; private readonly ClientManager _clientManager; private RepeatItem _repeatItem; private string _key; private List _contents; private bool _isLastItem; private string _selectContent; private string _repeatMessage; public string RepeatMessage { get => _repeatMessage; set { if (_repeatMessage != value) { _repeatMessage = value; OnPropertyChanged(() => RepeatMessage); } } } public string SelectContent { get => _selectContent; set { if (_selectContent != value) { _selectContent = value; OnPropertyChanged(() => SelectContent); } } } public bool IsLastItem { get => _isLastItem; set { if (_isLastItem != value) { _isLastItem = value; OnPropertyChanged(() => IsLastItem); } } } public List Contents { get => _contents; set { if (_contents != value) { _contents = value; SelectContent = string.Empty; OnPropertyChanged(() => Contents); } } } public string Key { get => _key; set { if (_key != value) { _key = value; OnPropertyChanged(() => Key); } } } public ButtonCommand NextCommand { get; } public ButtonCommand FinishCommand { get; } public HandleRepaetItemPageViewModel(string languageName, List repeatItems) { _clientManager = ClientManager.CreateInstance(); _languageName = languageName; _items = repeatItems; NextCommand = new ButtonCommand(OnNext, "Next"); FinishCommand = new ButtonCommand(OnFinish, "Finish"); _repeatItem = repeatItems.First(); Key = _repeatItem.Key; Contents = new List(_repeatItem.Contents); RepeatMessage = $"有{_items.Count}条重复内容,请选择要使用的内容!"; } private void OnFinish(object obj) { if (!string.IsNullOrEmpty(_selectContent)) { _clientManager.UpdateItemValue(_languageName,_key,_selectContent); } OnClosedRequest(); } private void OnNext(object obj) { if (!string.IsNullOrEmpty(_selectContent)) { _clientManager.UpdateItemValue(_languageName, _key, _selectContent); } var index = _items.IndexOf(_repeatItem); if (index < _items.Count) { if (index == _items.Count - 2 ) { IsLastItem = true; } _repeatItem = _items[index + 1]; Key = _repeatItem.Key; Contents = new List(_repeatItem.Contents); } } } }