예제 #1
0
 public bool TryGetLangViewItemVm(Guid langViewItemId, out LangViewItemViewModel vm)
 {
     return(_dicById.TryGetValue(langViewItemId, out vm));
 }
예제 #2
0
 private LangViewItemViewModels()
 {
     Global.Access <LangViewItemAddedEvent>(
         Guid.Parse("60FD738F-F260-4EF2-A60A-66B04EC6B243"),
         "添加了语言项后刷新VM内存",
         LogEnum.None,
         action: message => {
         if (_dicById.ContainsKey(message.Source.GetId()))
         {
             return;
         }
         LangViewModel langVm;
         if (LangViewModels.Current.TryGetLangVm(message.Source.LangId, out langVm))
         {
             Dictionary <string, List <LangViewItemViewModel> > dic = null;
             if (!_dicByLangAndView.ContainsKey(langVm))
             {
                 dic = new Dictionary <string, List <LangViewItemViewModel> >();
                 _dicByLangAndView.Add(langVm, dic);
             }
             else
             {
                 dic = _dicByLangAndView[langVm];
             }
             if (!dic.ContainsKey(message.Source.ViewId))
             {
                 dic.Add(message.Source.ViewId, new List <LangViewItemViewModel>());
             }
             var entity = new LangViewItemViewModel(message.Source);
             dic[message.Source.ViewId].Add(entity);
             _dicById.Add(entity.Id, entity);
         }
     });
     Global.Access <LangViewItemUpdatedEvent>(
         Guid.Parse("A4DCFEE0-FA36-4D84-9D98-0D4455BE1EA7"),
         "更新了语言项后刷新VM内存",
         LogEnum.None,
         action: message => {
         LangViewItemViewModel langItemVm;
         if (_dicById.TryGetValue(message.Source.GetId(), out langItemVm))
         {
             langItemVm.Update(message.Source);
         }
     });
     Global.Access <LangViewItemRemovedEvent>(
         Guid.Parse("4AA8EA72-7BD9-45D8-B798-EF505C665572"),
         "删除了语言项后刷新VM内存",
         LogEnum.None,
         action: message => {
         LangViewItemViewModel langItemVm;
         if (_dicById.TryGetValue(message.Source.GetId(), out langItemVm))
         {
             _dicById.Remove(langItemVm.Id);
             LangViewModel langVm;
             if (LangViewModels.Current.TryGetLangVm(langItemVm.LangId, out langVm))
             {
                 if (_dicByLangAndView.ContainsKey(langVm) && _dicByLangAndView[langVm].ContainsKey(langItemVm.ViewId))
                 {
                     _dicByLangAndView[langVm][langItemVm.ViewId].Remove(langItemVm);
                     if (_dicByLangAndView[langVm][langItemVm.ViewId].Count == 0)
                     {
                         _dicByLangAndView[langVm].Remove(langItemVm.ViewId);
                         if (_dicByLangAndView[langVm].Count == 0)
                         {
                             _dicByLangAndView.Remove(langVm);
                         }
                     }
                 }
             }
         }
     });
     foreach (var lang in LangViewModels.Current.LangVms)
     {
         var dic = new Dictionary <string, List <LangViewItemViewModel> >();
         _dicByLangAndView.Add(lang, dic);
         foreach (var item in LangViewItemSet.Instance.GetLangItems(lang.Id))
         {
             if (!dic.ContainsKey(item.Key))
             {
                 List <LangViewItemViewModel> list = item.Value.Select(a => new LangViewItemViewModel(a)).ToList();
                 dic.Add(item.Key, list);
                 foreach (var langViewItemVm in list)
                 {
                     _dicById.Add(langViewItemVm.Id, langViewItemVm);
                 }
             }
         }
     }
 }
예제 #3
0
 private LangViewItemViewModels()
 {
     VirtualRoot.On <LangViewItemAddedEvent>("添加了语言项后刷新VM内存", LogEnum.None,
                                             action: message => {
         if (_dicById.ContainsKey(message.Source.GetId()))
         {
             return;
         }
         LangViewModel langVm;
         if (LangViewModels.Current.TryGetLangVm(message.Source.LangId, out langVm))
         {
             Dictionary <string, List <LangViewItemViewModel> > dic = null;
             if (!_dicByLangAndView.ContainsKey(langVm))
             {
                 dic = new Dictionary <string, List <LangViewItemViewModel> >();
                 _dicByLangAndView.Add(langVm, dic);
             }
             else
             {
                 dic = _dicByLangAndView[langVm];
             }
             if (!dic.ContainsKey(message.Source.ViewId))
             {
                 dic.Add(message.Source.ViewId, new List <LangViewItemViewModel>());
             }
             var entity = new LangViewItemViewModel(message.Source);
             dic[message.Source.ViewId].Add(entity);
             _dicById.Add(entity.Id, entity);
         }
     });
     VirtualRoot.On <LangViewItemUpdatedEvent>("更新了语言项后刷新VM内存", LogEnum.None,
                                               action: message => {
         LangViewItemViewModel langItemVm;
         if (_dicById.TryGetValue(message.Source.GetId(), out langItemVm))
         {
             langItemVm.Update(message.Source);
         }
     });
     VirtualRoot.On <LangViewItemRemovedEvent>("删除了语言项后刷新VM内存", LogEnum.None,
                                               action: message => {
         LangViewItemViewModel langItemVm;
         if (_dicById.TryGetValue(message.Source.GetId(), out langItemVm))
         {
             _dicById.Remove(langItemVm.Id);
             LangViewModel langVm;
             if (LangViewModels.Current.TryGetLangVm(langItemVm.LangId, out langVm))
             {
                 if (_dicByLangAndView.ContainsKey(langVm) && _dicByLangAndView[langVm].ContainsKey(langItemVm.ViewId))
                 {
                     _dicByLangAndView[langVm][langItemVm.ViewId].Remove(langItemVm);
                     if (_dicByLangAndView[langVm][langItemVm.ViewId].Count == 0)
                     {
                         _dicByLangAndView[langVm].Remove(langItemVm.ViewId);
                         if (_dicByLangAndView[langVm].Count == 0)
                         {
                             _dicByLangAndView.Remove(langVm);
                         }
                     }
                 }
             }
         }
     });
     Init();
 }