public CharacterCollection(Dispatcher dispatcher, ICharacterViewModelProvider viewModelProvider) { _uiDispatcher = dispatcher; _sortProperties = viewModelProvider.GetSortableProperties() .Select(pair => new ComboItem(pair.Value, pair.Key)) .ToArray(); _sortProperty = viewModelProvider.DefaultSortProperty; _sortDirection = viewModelProvider.DefaultSortDirection; _sortDirections = new[] { new ComboItem(ListSortDirection.Ascending, "Ascending"), // new ComboItem(ListSortDirection.Descending, "Descending") }; ViewModelProvider = viewModelProvider; ViewModelProvider.CharacterAdded += ProviderOnCharacterAdded; ViewModelProvider.CharacterUpdated += ProviderOnCharacterUpdated; Characters = new ObservableCollection <CharacterViewModel>(viewModelProvider.GetCharacters()); foreach (CharacterViewModel model in Characters) { model.ParentCollection = this; } }
private void LoadCustomDir_Execute(bool subdirs) { FolderBrowserDialog fbd = new FolderBrowserDialog { Description = "Select Directory to Load", ShowNewFolderButton = false, SelectedPath = Core.EditSaveDir, }; if (fbd.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } SeatDataBlock.ResetSeats(); CharacterCollection collection = DataContext as CharacterCollection; if (collection != null) { while (!collection.ViewModelProvider.Finish()) { MessageBoxResult msg = MessageBox.Show(MESSAGE_ERROR_FINISH_PROVIDER, "Error", MessageBoxButton.OKCancel, MessageBoxImage.Hand); if (msg == MessageBoxResult.Cancel) { return; } } collection.ViewModelProvider.Dispose(); } ICharacterViewModelProvider viewModelProvider = subdirs ? new FileSystemCharacterViewModelProvider(true, fbd.SelectedPath) : new FileSystemCharacterViewModelProvider(false, fbd.SelectedPath); viewModelProvider.Initialize(this); viewModelProvider.CharacterLoaded += ViewModelProviderOnCharacterLoaded; CharacterCollection characterCollection = new CharacterCollection(Dispatcher, viewModelProvider); viewModelProvider.CharacterLoaded -= ViewModelProviderOnCharacterLoaded; SetTitle(); DataContext = characterCollection; SortBox.SelectedValue = viewModelProvider.DefaultSortProperty; OrderBox.SelectedValue = viewModelProvider.DefaultSortDirection; CharactersControl.SelectedIndex = 0; }