Exemplo n.º 1
0
        public FilePickerViewModel(
            IObjectPropertiesProvider objectPropertyProvider,
            IFileManager fileManager,
            RecentItemsFolderViewModel recentItemsFolderViewModel,
            IStateService stateService)
        {
            _stateService = stateService;
            _objectPropertyProvider = objectPropertyProvider;
            this.Items = new ObservableCollection<IFilePickerItem>();
            this.ContextMenuItems = new ObservableCollection<MenuItemViewModel>
            {
                new MenuItemViewModel("Add Folder", this.AddLocation)
            };

            if (recentItemsFolderViewModel != null)
            {
                if (_stateService != null)
                {
                    FilePickerState state;
                    if (_stateService.TryGetState("FilePicker", out state))
                    {
                        foreach (var item in state.RecentItems)
                        {
                            recentItemsFolderViewModel.ChildItems.Add(new FileLocationViewModel(item, fileManager));
                        }
                    }
                }
                this.Items.Add(recentItemsFolderViewModel);
            }

            if (_stateService != null)
                _stateService.SavingEvent.Subscribe(SaveState);

            _disposables.Add(this
                .ObserveProperty(v => v.SelectedItemProperties)
                .ObserveLatest(properties => properties.Items)
                .ObserveLatest(items => items.Count)
                .Subscribe(count => this.ShowItemProperties = count > 0));
        }