From a74d1285ad7b27b6faf809e667166263ff39070d Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Sat, 30 Mar 2024 13:57:21 +0100 Subject: [PATCH] Bind `SelectedItem` instead of `SelecteIndex` --- Markdowser/ViewModels/MainWindowViewModel.cs | 25 ++++++++++---------- Markdowser/Views/MainWindow.axaml | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Markdowser/ViewModels/MainWindowViewModel.cs b/Markdowser/ViewModels/MainWindowViewModel.cs index 2f5323f..2488d4a 100644 --- a/Markdowser/ViewModels/MainWindowViewModel.cs +++ b/Markdowser/ViewModels/MainWindowViewModel.cs @@ -30,26 +30,26 @@ public partial class MainWindowViewModel : ViewModelBase private readonly StringBuilder html = new(); private StringBuilder? content; - private int currentTabIndex; + private TabItem currentTab = null!; private bool showSidePanel; private bool isBusy; private int progress; public ObservableCollection Tabs => GlobalState.Tabs; public string Title => $"{nameof(Markdowser)} - {Assembly.GetExecutingAssembly().GetName().Version?.ToString()}"; - public int CurrentTabIndex + public TabItem CurrentTab { - get => currentTabIndex; + get => currentTab; set { - if (CurrentTab is not null) + if (currentTab is not null) { - CurrentTab.Tag = Url; + currentTab.Tag = Url; } - _ = this.RaiseAndSetIfChanged(ref currentTabIndex, value); + _ = this.RaiseAndSetIfChanged(ref currentTab!, value); - Url = CurrentTab?.Tag?.ToString() ?? string.Empty; + Url = currentTab?.Tag?.ToString() ?? string.Empty; FetchUrl(); } @@ -128,9 +128,12 @@ public partial class MainWindowViewModel : ViewModelBase public ICommand CloseTab => ReactiveCommand.Create(() => { - if (Tabs.Count > 1 && Tabs.Remove(CurrentTab)) + if (Tabs.Count > 1) { - CurrentTabIndex = Math.Max(0, CurrentTabIndex - 1); + int currentIndex = Tabs.IndexOf(CurrentTab); + _ = Tabs.Remove(CurrentTab); + + CurrentTab = currentIndex > 0 ? Tabs[currentIndex - 1] : Tabs[0]; this.RaisePropertyChanged(nameof(CloseTabEnabled)); } }); @@ -139,12 +142,10 @@ public partial class MainWindowViewModel : ViewModelBase { TabItem tab = new() { Header = "New Tab", Name = Guid.NewGuid().ToString() }; Tabs.Add(tab); - CurrentTabIndex = Tabs.Count - 1; + CurrentTab = tab; this.RaisePropertyChanged(nameof(CloseTabEnabled)); }); - private TabItem CurrentTab => Tabs[CurrentTabIndex]; - private StringBuilder DefaultContent => new StringBuilder() .AppendLine($"![Logo](avares://Markdowser/Assets/Markdowser-{(Settings.Current.DarkMode ? "Dark" : "Light")}-Transparent.png)") .AppendLine() diff --git a/Markdowser/Views/MainWindow.axaml b/Markdowser/Views/MainWindow.axaml index 6f2662e..16f5b4a 100644 --- a/Markdowser/Views/MainWindow.axaml +++ b/Markdowser/Views/MainWindow.axaml @@ -35,7 +35,7 @@ - +