public ServerMessagesViewModel() { if (WpfUtil.IsInDesignMode) { return; } foreach (var messageType in EnumItem <ServerMessageType> .GetEnumItems()) { _count.Add(messageType.Value, new MessageTypeItem <ServerMessageType>(messageType, ServerMessageViewModel.GetIcon, ServerMessageViewModel.GetIconFill, RefreshQueryResults)); } Init(); this.Add = new DelegateCommand(() => { new ServerMessageViewModel(new ServerMessageData { Id = Guid.NewGuid(), MessageType = ServerMessageType.Info.GetName(), Provider = "admin", Content = string.Empty, Timestamp = DateTime.MinValue }).Edit.Execute(FormType.Add); }); this.ClearKeyword = new DelegateCommand(() => { this.Keyword = string.Empty; }); this.Clear = new DelegateCommand(() => { this.ShowDialog(new DialogWindowViewModel(message: "确定清空吗?", title: "确认", onYes: () => { VirtualRoot.Execute(new ClearServerMessages()); })); }); VirtualRoot.BuildEventPath <ServerMessagesClearedEvent>("清空了本地存储的服务器消息后刷新Vm内存", LogEnum.DevConsole, action: message => { UIThread.Execute(() => { Init(); }); }); VirtualRoot.BuildEventPath <NewServerMessageLoadedEvent>("从服务器加载了新消息后刷新Vm内存", LogEnum.DevConsole, action: message => { UIThread.Execute(() => { foreach (var item in message.Data) { var vm = new ServerMessageViewModel(item); _serverMessageVms.Insert(0, vm); if (IsSatisfyQuery(vm)) { _queyResults.Insert(0, vm); } } OnPropertyChanged(nameof(IsNoRecord)); }); }); _serverMessageVms = new ObservableCollection <ServerMessageViewModel>(NTMinerRoot.Instance.ServerMessageSet.Select(a => new ServerMessageViewModel(a))); }
public ServerMessagesViewModel() { if (WpfUtil.IsInDesignMode) { return; } foreach (var messageType in NTMinerContext.ServerMessageTypeEnumItems) { _count.Add(messageType.Value, new MessageTypeItem <ServerMessageType>(messageType, ServerMessageViewModel.GetIcon, ServerMessageViewModel.GetIconFill, RefreshQueryResults)); } Init(); this.Add = new DelegateCommand(() => { new ServerMessageViewModel(new ServerMessageData { Id = Guid.NewGuid(), MessageType = ServerMessageType.Info.GetName(), Provider = "admin", Content = string.Empty, Timestamp = DateTime.MinValue }).Edit.Execute(FormType.Add); }); this.ClearKeyword = new DelegateCommand(() => { this.Keyword = string.Empty; }); this.Clear = new DelegateCommand(() => { this.ShowSoftDialog(new DialogWindowViewModel(message: "确定清空吗?", title: "确认", onYes: () => { VirtualRoot.Execute(new ClearServerMessages()); })); }); VirtualRoot.AddEventPath <ServerMessagesClearedEvent>("清空了本地存储的服务器消息后刷新Vm内存", LogEnum.DevConsole, action: message => { Init(); }, location: this.GetType()); VirtualRoot.AddEventPath <NewServerMessageLoadedEvent>("从服务器加载了新消息后刷新Vm内存", LogEnum.DevConsole, action: message => { UIThread.Execute(() => { foreach (var item in message.Data) { var vm = new ServerMessageViewModel(item); var exist = _serverMessageVms.FirstOrDefault(a => a.Id == item.Id); if (exist != null) { _serverMessageVms.Remove(exist); if (item.IsDeleted) { _count[exist.MessageTypeEnum].Count--; } else { _serverMessageVms.Insert(0, vm); if (exist.MessageType != item.MessageType) { _count[exist.MessageTypeEnum].Count--; _count[vm.MessageTypeEnum].Count++; } } } else if (!vm.IsDeleted) { _serverMessageVms.Insert(0, vm); _count[vm.MessageTypeEnum].Count++; } if (IsSatisfyQuery(vm)) { exist = _queyResults.FirstOrDefault(a => a.Id == item.Id); if (exist != null) { _queyResults.Remove(exist); } if (!vm.IsDeleted) { _queyResults.Insert(0, vm); } } } OnPropertyChanged(nameof(IsNoRecord)); }); }, location: this.GetType()); VirtualRoot.AddEventPath <NewDayEvent>("新的一天到来时刷新消息集中的可读性时间戳展示", LogEnum.DevConsole, action: message => { if (QueryResults == null) { return; } foreach (var item in QueryResults) { if (item.Timestamp.Date.AddDays(3) >= message.BornOn.Date) { item.OnPropertyChanged(nameof(item.TimestampText)); } else { // 因为是按照时间倒叙排列的,所以可以break break; } } }, location: this.GetType()); }