Browse Source

Removed None in menu item

Krzysztof Krysiński 1 year ago
parent
commit
82c22a1540
42 changed files with 83 additions and 11 deletions
  1. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ActiveToolToZoomModeConverter.cs
  2. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/BlendModeToStringConverter.cs
  3. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/BoolToIntConverter.cs
  4. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/BoolToValueConverter.cs
  5. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/CountToVisibilityConverter.cs
  6. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/EnumBooleanConverter.cs
  7. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/EnumToStringConverter.cs
  8. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/EqualityBoolToIsVisibleConverter.cs
  9. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/FileExtensionToColorConverter.cs
  10. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/GenericColorToMediaColorConverter.cs
  11. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ImagePathToBitmapConverter.cs
  12. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/IndentConverter.cs
  13. 1 2
      src/PixiEditor.AvaloniaUI/Helpers/Converters/IndexToAssociatedKeyConverter.cs
  14. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/IntToViewportRectConverter.cs
  15. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/IsEqualConverter.cs
  16. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/IsSelectionToolConverter.cs
  17. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/KeyToStringConverter.cs
  18. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ModifierFlagToModifiersConverter.cs
  19. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/MultiplyConverter.cs
  20. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/NotNullToVisibilityConverter.cs
  21. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/NullToVisibilityConverter.cs
  22. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteItemsToWidthConverter.cs
  23. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteViewerWidthToVisibilityConverter.cs
  24. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/RadiansToDegreesConverter.cs
  25. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ReciprocalConverter.cs
  26. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ScaleToBitmapScalingModeConverter.cs
  27. 3 1
      src/PixiEditor.AvaloniaUI/Helpers/Converters/SingleInstanceConverter.cs
  28. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/SingleInstanceMultiValueConverter.cs
  29. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/StructureMemberSelectionTypeToColorConverter.cs
  30. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/SubtractConverter.cs
  31. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ThresholdVisibilityConverter.cs
  32. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ToolSizeToIntConverter.cs
  33. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ZoomModeToHitTestVisibleConverter.cs
  34. 1 0
      src/PixiEditor.AvaloniaUI/Helpers/Converters/ZoomToViewportConverter.cs
  35. 0 1
      src/PixiEditor.AvaloniaUI/Views/Input/SizePicker.axaml
  36. 0 1
      src/PixiEditor.AvaloniaUI/Views/Main/ViewportControls/FixedViewport.axaml
  37. 1 1
      src/PixiEditor.AvaloniaUI/Views/Palettes/PaletteViewer.axaml
  38. 2 1
      src/PixiEditor.UI.Common/Controls/MenuItem.axaml
  39. 3 2
      src/PixiEditor.UI.Common/Controls/ToggleableMenuItem.axaml
  40. 2 2
      src/PixiEditor.UI.Common/Converters/MarkupConverter.cs
  41. 19 0
      src/PixiEditor.UI.Common/Converters/MenuItemKeyGestureConverter.cs
  42. 20 0
      src/PixiEditor.UI.Common/Converters/SingleInstanceConverter.cs

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ActiveToolToZoomModeConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using PixiEditor.AvaloniaUI.ViewModels.Tools.Tools;
+using PixiEditor.UI.Common.Converters;
 using PixiEditor.Zoombox;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/BlendModeToStringConverter.cs

@@ -2,6 +2,7 @@
 using PixiEditor.AvaloniaUI.Helpers.Extensions;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 internal class BlendModeToStringConverter : SingleInstanceConverter<BlendModeToStringConverter>

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/BoolToIntConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/BoolToValueConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/CountToVisibilityConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/EnumBooleanConverter.cs

@@ -1,4 +1,5 @@
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/EnumToStringConverter.cs

@@ -1,4 +1,5 @@
 using PixiEditor.AvaloniaUI.Models.Dialogs;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/EqualityBoolToIsVisibleConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/FileExtensionToColorConverter.cs

@@ -3,6 +3,7 @@ using System.Globalization;
 using System.IO;
 using Avalonia.Media;
 using PixiEditor.AvaloniaUI.Models.Files;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/GenericColorToMediaColorConverter.cs

@@ -2,6 +2,7 @@
 using Avalonia.Media;
 using PixiEditor.AvaloniaUI.Helpers.Extensions;
 using PixiEditor.Extensions.Palettes;
+using PixiEditor.UI.Common.Converters;
 using BackendColor = PixiEditor.DrawingApi.Core.ColorsImpl.Color;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ImagePathToBitmapConverter.cs

@@ -5,6 +5,7 @@ using Avalonia;
 using Avalonia.Data;
 using Avalonia.Media.Imaging;
 using Avalonia.Platform;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/IndentConverter.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using Avalonia.Controls;
 using Avalonia.Data;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 2
src/PixiEditor.AvaloniaUI/Helpers/Converters/IndexToAssociatedKeyConverter.cs

@@ -1,9 +1,8 @@
 using System.Collections.Generic;
 using System.Globalization;
-using PixiEditor.AvaloniaUI.Helpers.Converters;
 using PixiEditor.Extensions.Palettes;
 
-namespace PixiEditor.Helpers.Converters;
+namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 
 internal class IndexToAssociatedKeyConverter : SingleInstanceMultiValueConverter<IndexToAssociatedKeyConverter>
 {

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/IntToViewportRectConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/IsEqualConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/IsSelectionToolConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using PixiEditor.AvaloniaUI.ViewModels.Tools.Tools;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/KeyToStringConverter.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using Avalonia.Input;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ModifierFlagToModifiersConverter.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Globalization;
 using Avalonia.Input;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/MultiplyConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 internal class MultiplyConverter : SingleInstanceConverter<MultiplyConverter>

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/NotNullToVisibilityConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/NullToVisibilityConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteItemsToWidthConverter.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Globalization;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteViewerWidthToVisibilityConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/RadiansToDegreesConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ReciprocalConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 internal class ReciprocalConverter : SingleInstanceConverter<ReciprocalConverter>

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ScaleToBitmapScalingModeConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia.Media.Imaging;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 3 - 1
src/PixiEditor.AvaloniaUI/Helpers/Converters/SingleInstanceConverter.cs

@@ -1,4 +1,6 @@
-namespace PixiEditor.AvaloniaUI.Helpers.Converters;
+using PixiEditor.UI.Common.Converters;
+
+namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 
 /// <summary>
 /// Use this if you want to share the same converter over the whole application. <para/> Do not use this if your converter has properties.

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/SingleInstanceMultiValueConverter.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Globalization;
 using Avalonia.Data.Converters;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/StructureMemberSelectionTypeToColorConverter.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using Avalonia.Media;
 using PixiEditor.AvaloniaUI.Models.Layers;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 internal class StructureMemberSelectionTypeToColorConverter : SingleInstanceConverter<StructureMemberSelectionTypeToColorConverter>

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/SubtractConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ThresholdVisibilityConverter.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ToolSizeToIntConverter.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using System.Text;
 using System.Text.RegularExpressions;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ZoomModeToHitTestVisibleConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 using PixiEditor.Zoombox;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;

+ 1 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/ZoomToViewportConverter.cs

@@ -1,5 +1,6 @@
 using System.Globalization;
 using Avalonia;
+using PixiEditor.UI.Common.Converters;
 
 namespace PixiEditor.AvaloniaUI.Helpers.Converters;
 

+ 0 - 1
src/PixiEditor.AvaloniaUI/Views/Input/SizePicker.axaml

@@ -5,7 +5,6 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:local="clr-namespace:PixiEditor.Views"
-             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              xmlns:enums="clr-namespace:PixiEditor.Models.Enums"
              xmlns:userControls="clr-namespace:PixiEditor.Views.UserControls"
              xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"

+ 0 - 1
src/PixiEditor.AvaloniaUI/Views/Main/ViewportControls/FixedViewport.axaml

@@ -5,7 +5,6 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:local="clr-namespace:PixiEditor.Views.UserControls"
-             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              xmlns:converters1="clr-namespace:PixiEditor.AvaloniaUI.Helpers.Converters"
              xmlns:ui="clr-namespace:PixiEditor.AvaloniaUI.Helpers.UI"
              mc:Ignorable="d"

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Palettes/PaletteViewer.axaml

@@ -7,9 +7,9 @@
              xmlns:views="clr-namespace:PixiEditor.Views"
              xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              xmlns:palettes="clr-namespace:PixiEditor.AvaloniaUI.Views.Palettes"
-             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              xmlns:decorators="clr-namespace:PixiEditor.AvaloniaUI.Views.Decorators"
              xmlns:ui1="clr-namespace:PixiEditor.AvaloniaUI.Helpers.UI"
+             xmlns:converters="clr-namespace:PixiEditor.AvaloniaUI.Helpers.Converters"
              d:DesignHeight="450" d:DesignWidth="300" Name="paletteControl">
     <DockPanel>
         <palettes:ColorReplacer Grid.Row="3" VerticalAlignment="Bottom" Name="Replacer" DockPanel.Dock="Bottom"

+ 2 - 1
src/PixiEditor.UI.Common/Controls/MenuItem.axaml

@@ -2,6 +2,7 @@
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:conv="using:Avalonia.Controls.Converters"
                     xmlns:sys="using:System"
+                    xmlns:converters="clr-namespace:PixiEditor.UI.Common.Converters"
                     x:ClassModifier="internal">
   <conv:PlatformKeyGestureConverter x:Key="KeyGestureConverter" />
 
@@ -56,7 +57,7 @@
                        Grid.Column="3"
                        VerticalAlignment="Center"
                        Text="{TemplateBinding InputGesture,
-                                              Converter={StaticResource KeyGestureConverter}}" />
+                                              Converter={converters:MenuItemKeyGestureConverter}}" />
             <Path Name="rightArrow"
                   Grid.Column="4"
                   Margin="10,0,0,0"

+ 3 - 2
src/PixiEditor.UI.Common/Controls/ToggleableMenuItem.axaml

@@ -2,7 +2,8 @@
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:input="clr-namespace:PixiEditor.AvaloniaUI.Views.Input"
                     xmlns:converters="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls"
-                    xmlns:system="clr-namespace:System;assembly=System.Runtime">
+                    xmlns:system="clr-namespace:System;assembly=System.Runtime"
+                    xmlns:converters1="clr-namespace:PixiEditor.UI.Common.Converters">
     <ControlTheme x:Key="{x:Type input:ToggleableMenuItem}"
                   TargetType="input:ToggleableMenuItem">
         <Setter Property="Background" Value="Transparent" />
@@ -56,7 +57,7 @@
                                    Grid.Column="3"
                                    VerticalAlignment="Center"
                                    Text="{TemplateBinding InputGesture,
-                                              Converter={StaticResource KeyGestureConverter}}" />
+                                              Converter={converters1:MenuItemKeyGestureConverter}}" />
                         <Path Name="rightArrow"
                               Grid.Column="4"
                               Margin="10,0,0,0"

+ 2 - 2
src/PixiEditor.AvaloniaUI/Helpers/Converters/MarkupConverter.cs → src/PixiEditor.UI.Common/Converters/MarkupConverter.cs

@@ -2,9 +2,9 @@
 using Avalonia.Data.Converters;
 using Avalonia.Markup.Xaml;
 
-namespace PixiEditor.AvaloniaUI.Helpers.Converters;
+namespace PixiEditor.UI.Common.Converters;
 
-internal abstract class MarkupConverter : MarkupExtension, IValueConverter
+public abstract class MarkupConverter : MarkupExtension, IValueConverter
 {
     public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
 

+ 19 - 0
src/PixiEditor.UI.Common/Converters/MenuItemKeyGestureConverter.cs

@@ -0,0 +1,19 @@
+using System.Globalization;
+using Avalonia;
+using Avalonia.Controls.Converters;
+using Avalonia.Input;
+
+namespace PixiEditor.UI.Common.Converters;
+
+internal class MenuItemKeyGestureConverter : SingleInstanceConverter<MenuItemKeyGestureConverter>
+{
+    PlatformKeyGestureConverter converter = new();
+
+    public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+    {
+        if (value is KeyGesture { Key: Key.None, KeyModifiers: KeyModifiers.None })
+            return string.Empty;
+
+        return converter.Convert(value, targetType, parameter, culture);
+    }
+}

+ 20 - 0
src/PixiEditor.UI.Common/Converters/SingleInstanceConverter.cs

@@ -0,0 +1,20 @@
+namespace PixiEditor.UI.Common.Converters;
+
+/// <summary>
+/// Use this if you want to share the same converter over the whole application. <para/> Do not use this if your converter has properties.
+/// </summary>
+internal abstract class SingleInstanceConverter<TThis> : MarkupConverter
+    where TThis : SingleInstanceConverter<TThis>
+{
+    private static SingleInstanceConverter<TThis> instance;
+
+    public override object ProvideValue(IServiceProvider serviceProvider)
+    {
+        if (instance is null)
+        {
+            instance = this;
+        }
+
+        return instance;
+    }
+}