private CombinedFleetViewModel MakeCombinedFleetViewModel(CombinedFleet fleet) { if (combinedFleetInstance == null || combinedFleetInstance.Source != fleet) { combinedFleetInstance = new CombinedFleetViewModel(fleet); } return(combinedFleetInstance); }
private void UpdateFleets() { // ややこしいけど、CombinedFleetViewModel は連合艦隊が編成・解除される度に使い捨て // FleetViewModel は InitializeFleets() で作ったインスタンスをずっと使う foreach (var f in this.Fleets.OfType<CombinedFleetViewModel>()) f.Dispose(); if (KanColleClient.Current.Homeport.Organization.Combined) { var cfvm = new CombinedFleetViewModel(KanColleClient.Current.Homeport.Organization.CombinedFleet); var fleets = this.allFleets.Where(x => cfvm.Source.Fleets.All(f => f != x.Source)); this.Fleets = EnumerableEx.Return<ItemViewModel>(cfvm).Concat(fleets).ToArray(); this.SelectedFleet = cfvm; } else { this.Fleets = this.allFleets.OfType<ItemViewModel>().ToArray(); if (this.allFleets.All(x => x != this.SelectedFleet)) { // SelectedFleet が allFleets の中のどれでもないとき // -> SelectedFleet は連合艦隊だったので、改めて第一艦隊を選択 this.SelectedFleet = this.Fleets.FirstOrDefault(); } } }