public bool Open(TreeViewItemVM sender) { if (!sender.CanEdit()) { MessageBox.Show(String.Format("Can't open {0}", sender.Header)); return(false); } object DataContext; string Title = sender.PersonaFile.Name; switch (sender.PersonaFile.GameData.Type) { case FormatEnum.SPR: DataContext = new SPREditorVM(sender.PersonaFile.GameData as SPR); break; case FormatEnum.SPD: DataContext = new SPDEditorVM(sender.PersonaFile.GameData as SPD); break; case FormatEnum.PTP: DataContext = new PTPEditorVM(sender.PersonaFile.GameData as PTP); break; case FormatEnum.BMD: DataContext = new BMDEditorVM(sender.PersonaFile); break; case FormatEnum.FTD: DataContext = new FTDEditorVM(sender.PersonaFile.GameData as FTD); break; case FormatEnum.FNT: DataContext = new FNTEditorVM(sender.PersonaFile.GameData as FNT); break; case FormatEnum.FNT0: DataContext = new FNT0EditorVM(sender.PersonaFile.GameData as FNT0); break; case FormatEnum.DAT: DataContext = new HEXEditorVM(sender.PersonaFile.GameData as DAT); break; default: return(false); } ClosableTabItemVM closableTabItemVM = new ClosableTabItemVM(); closableTabItemVM.DataContext = DataContext; closableTabItemVM.TabTitle = Title; closableTabItemVM.PropertyChanged += ClosableTabItemVM_PropertyChanged; closableTabItemVM.PersonaFile = sender; tabCollection.Add(closableTabItemVM); SelectedTabIndex = tabCollection.IndexOf(closableTabItemVM); sender.UnEnable(); return(true); }