public MainViewModel() { Config.Instance.PropertyChanged += (sender, e) => { if (e.PropertyName == "UUID") { EmitPropertyChanged("DataReport"); } if (e.PropertyName == "Language") { var ne = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset); Regions.EmitCollectionChanged(ne); Fates.EmitCollectionChanged(ne); Templates.EmitCollectionChanged(ne); } }; Data.Instance.DataLoaded += (sender, e) => { Templates = new ListBindingTarget <Models.Template>(Data.Instance.Templates); EmitPropertyChanged("World"); }; Network.State.Instance.PropertyChanged += (sender, e) => { if (e.PropertyName == "WorldId") { EmitPropertyChanged("World"); } }; }
public static ListBindingTarget <FateTreeNodeWithChildren> Create(Dictionary <int, Models.FateData> fates) { var result = new ListBindingTarget <FateTreeNodeWithChildren>() { new FateTerritoryTree(0) }; if (fates == null) { return(result); } foreach (var pair in fates) { if (pair.Value.Location == 0) { ((FateTerritoryTree)result[0]).Children.Add(new FateNode(pair.Key, pair.Value.Name)); } else { FateVersionTree versionTree = (FateVersionTree)result.FirstOrDefault(tree => tree is FateVersionTree && pair.Value.Patch == ((FateVersionTree)tree).PatchId); if (versionTree == null) { versionTree = new FateVersionTree(pair.Value.Patch); result.Add(versionTree); } FateTerritoryTree territoryTree = (FateTerritoryTree)versionTree.Children.FirstOrDefault(tree => tree is FateTerritoryTree && pair.Value.Location == ((FateTerritoryTree)tree).TerritoryId); if (territoryTree == null) { territoryTree = new FateTerritoryTree(pair.Value.Location); versionTree.Children.Add(territoryTree); } territoryTree.Children.Add(new FateNode(pair.Key, pair.Value.Name)); } } return(result); }