Example #1
0
 protected virtual void OnNavigateForward(EventArgs e)
 {
     if (NavigateForward != null)
     {
         NavigateForward.Invoke(this, e);
     }
 }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NavigationViewModel"/> class.
        /// </summary>
        public NavigationViewModel()
        {
            history = new ReactiveList <IPanePageViewModel>();
            history.Changing.Subscribe(CollectionChanging);
            history.Changed.Subscribe(CollectionChanged);

            var pos = this.WhenAnyValue(
                x => x.Index,
                x => x.History.Count,
                (i, c) => new { Index = i, Count = c });

            content = pos
                      .Where(x => x.Index < x.Count)
                      .Select(x => x.Index != -1 ? history[x.Index] : null)
                      .StartWith((IPanePageViewModel)null)
                      .ToProperty(this, x => x.Content);

            this.WhenAnyValue(x => x.Content)
            .Buffer(2, 1)
            .Subscribe(x => {
                if (x[0] != null && history.Contains(x[0]))
                {
                    x[0].Deactivated();
                }
                x[1]?.Activated();
            });

            NavigateBack = ReactiveCommand.Create(() => { }, pos.Select(x => x.Index > 0));
            NavigateBack.Subscribe(_ => Back());
            NavigateForward = ReactiveCommand.Create(() => { }, pos.Select(x => x.Index < x.Count - 1));
            NavigateForward.Subscribe(_ => Forward());
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NavigationViewModel"/> class.
        /// </summary>
        public NavigationViewModel()
        {
            history = new ReactiveList <IPanePageViewModel>();
            history.BeforeItemsAdded.Subscribe(BeforeItemAdded);
            history.CollectionChanged += CollectionChanged;

            var pos = this.WhenAnyValue(
                x => x.Index,
                x => x.History.Count,
                (i, c) => new { Index = i, Count = c });

            content = pos
                      .Where(x => x.Index < x.Count)
                      .Select(x => x.Index != -1 ? history[x.Index] : null)
                      .StartWith((IPanePageViewModel)null)
                      .ToProperty(this, x => x.Content);

            NavigateBack = ReactiveCommand.Create(pos.Select(x => x.Index > 0));
            NavigateBack.Subscribe(_ => Back());
            NavigateForward = ReactiveCommand.Create(pos.Select(x => x.Index < x.Count - 1));
            NavigateForward.Subscribe(_ => Forward());
        }
        /// <summary>
        /// Provides different key shortcuts
        /// </summary>
        /// <param name="key"></param>
        public void KeyDown(VirtualKey key)
        {
            switch (key)
            {
            case VirtualKey.Left:
                NavigateBack.ExecuteWhen();
                break;

            case VirtualKey.Right:
                NavigateForward.ExecuteWhen();
                break;

            case VirtualKey.Back:
                NavigateBack.ExecuteWhen();
                break;

            case VirtualKey.F5:
                Refresh();
                break;

            case VirtualKey.F2:
                RenameStorageItemSelectedAsync();
                break;

            case VirtualKey.Delete:
                DeleteStorageItemSelected();
                break;
            }


            var ctrlDown = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down);

            if (!ctrlDown)
            {
                return;
            }

            switch (key)
            {
            case VirtualKey.R:
                Refresh();
                break;

            case VirtualKey.C:
                CopyStorageItemSelected();
                break;

            case VirtualKey.X:
                CutStorageItemSelected();
                break;

            case VirtualKey.V:
                PasteStorageItemSelected();
                break;

            case VirtualKey.A:
                if (SelectedItems.Count == FileSystemElements.Count)
                {
                    SelectedItems.Clear();
                }
                else
                {
                    for (int i = 0; i < FileSystemElements.Count; i++)
                    {
                        if (!SelectedItems.Contains(FileSystemElements[i]))
                        {
                            SelectedItems.Add(FileSystemElements[i]);
                        }
                    }
                }

                break;
            }
        }
Example #5
0
 public static void RaiseNavigateForward() => NavigateForward?.Invoke(null, EventArgs.Empty);