protected virtual void OnNavigateForward(EventArgs e) { if (NavigateForward != null) { NavigateForward.Invoke(this, e); } }
/// <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()); }
/// <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; } }
public static void RaiseNavigateForward() => NavigateForward?.Invoke(null, EventArgs.Empty);