Jelajahi Sumber

Fixed tests

CPKreuz 4 tahun lalu
induk
melakukan
8e0eedf551

+ 17 - 0
PixiEditor/ViewModels/SubViewModels/Main/StylusViewModel.cs

@@ -11,9 +11,26 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
 
         private Tool PreviousTool { get; set; }
 
+        public StylusViewModel()
+            : this(null)
+        {
+        }
+
         public StylusViewModel(ViewModelMain owner)
             : base(owner)
         {
+            SetOwner(owner);
+        }
+
+        public void SetOwner(ViewModelMain owner)
+        {
+            if (Owner is not null)
+            {
+                throw new System.Exception("StylusViewModel already has an owner");
+            }
+
+            Owner = owner;
+
             // TODO: Only capture it on the Drawing View Port
             Window mw = Application.Current.MainWindow;
 

+ 1 - 1
PixiEditor/ViewModels/SubViewModels/SubViewModel.cs

@@ -3,7 +3,7 @@
     public class SubViewModel<T> : ViewModelBase
         where T : ViewModelBase
     {
-        public T Owner { get; }
+        public T Owner { get; protected set; }
 
         public SubViewModel(T owner)
         {

+ 3 - 1
PixiEditor/ViewModels/ViewModelMain.cs

@@ -112,7 +112,9 @@ namespace PixiEditor.ViewModels
             DocumentSubViewModel = new DocumentViewModel(this);
             DiscordViewModel = new DiscordViewModel(this, "764168193685979138");
             UpdateSubViewModel = new UpdateViewModel(this);
-            StylusSubViewModel = new StylusViewModel(this);
+
+            StylusSubViewModel = services.GetService<StylusViewModel>();
+            StylusSubViewModel?.SetOwner(this);
 
             AddDebugOnlyViewModels();
             AddReleaseOnlyViewModels();

+ 7 - 6
PixiEditor/Views/MainWindow.xaml.cs

@@ -5,6 +5,7 @@ using System;
 using System.ComponentModel;
 using System.Windows;
 using System.Windows.Input;
+using PixiEditor.ViewModels.SubViewModels.Main;
 
 namespace PixiEditor
 {
@@ -13,28 +14,28 @@ namespace PixiEditor
     /// </summary>
     public partial class MainWindow : Window
     {
-        private readonly ViewModelMain viewModel;
+        public new ViewModelMain DataContext { get => (ViewModelMain)base.DataContext; set => base.DataContext = value; }
 
         public MainWindow()
         {
             InitializeComponent();
 
             IServiceCollection services = new ServiceCollection()
-                .AddSingleton<IPreferences>(new PreferencesSettings());
+                .AddSingleton<IPreferences>(new PreferencesSettings())
+                .AddSingleton(new StylusViewModel());
 
             DataContext = new ViewModelMain(services.BuildServiceProvider());
 
             StateChanged += MainWindowStateChangeRaised;
             MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
-            viewModel = (ViewModelMain)DataContext;
-            viewModel.CloseAction = Close;
+            DataContext.CloseAction = Close;
             Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
         }
 
         protected override void OnClosing(CancelEventArgs e)
         {
-            ((ViewModelMain)DataContext).CloseWindow(e);
-            viewModel.DiscordViewModel.Dispose();
+            DataContext.CloseWindow(e);
+            DataContext.DiscordViewModel.Dispose();
         }
 
         private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)