示例#1
0
        public SidebarCommandManager(ISidebarViewModel svm, IEventAggregator events,
                                     params IExportCommandBindings[] additionalBindingExportSource)
            : base(additionalBindingExportSource)
        {
            _svm = svm;

            InitCommandManager();


            ToolbarCommands = new ToolbarCommandsHelper(events,
                                                        null,
                                                        null)
            {
            };
        }
        public FileListViewModel(IWindowManager windowManager, IEventAggregator events, ISidebarViewModel sidebar = null)
        {
            Events = events;
            var entryHelper = new EntriesHelper <IEntryViewModel>(loadEntriesTask)
            {
                ClearBeforeLoad = false
            };

            ProcessedEntries = new EntriesProcessor <IEntryViewModel>(entryHelper, evm => evm.EntryModel);
            Columns          = new ColumnsHelper(ProcessedEntries,
                                                 (col, direction) =>
                                                 new EntryViewModelComparer(
                                                     col.Comparer != null ? col.Comparer : CurrentDirectory.Profile.GetComparer(col),
                                                     direction)
                                                 );
            Selection  = new ListSelector <IEntryViewModel, IEntryModel>(entryHelper);
            DropHelper = new FileListDropHelper(this);
            DragHelper = new FileListDragHelper(this);

            Selection.SelectionChanged += (o, e) =>
            { events.PublishOnUIThread(new SelectionChangedEvent(this, Selection.SelectedItems)); };

            if (events != null)
            {
                events.Subscribe(this);
            }

            Sidebar = sidebar ?? new SidebarViewModel(events);
            Sidebar.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == "IsVisible")
                {
                    NotifyOfPropertyChange(() => ShowSidebar);
                }
            };
            Commands = new FileListCommandManager(this, windowManager, events, Selection, Sidebar.Commands);
        }