From 4b60e7dde52a88fdeaabcf9efcd5ea538ea23933 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Tue, 19 Aug 2025 13:14:08 +0200 Subject: [PATCH] Combine TypeConverters and IValueConverters --- MapControl/Avalonia/MapBase.Avalonia.cs | 1 + MapControl/Shared/TypeConverters.cs | 68 +++++++++++++++++++++--- MapControl/UWP/MapControl.UWP.csproj | 6 +-- MapControl/WinUI/MapControl.WinUI.csproj | 5 -- MapControl/WinUI/ValueConverters.cs | 61 --------------------- 5 files changed, 64 insertions(+), 77 deletions(-) delete mode 100644 MapControl/WinUI/ValueConverters.cs diff --git a/MapControl/Avalonia/MapBase.Avalonia.cs b/MapControl/Avalonia/MapBase.Avalonia.cs index 37747cea..89d3a2b5 100644 --- a/MapControl/Avalonia/MapBase.Avalonia.cs +++ b/MapControl/Avalonia/MapBase.Avalonia.cs @@ -4,6 +4,7 @@ global using Avalonia.Animation.Easings; global using Avalonia.Controls; global using Avalonia.Controls.Documents; global using Avalonia.Data; +global using Avalonia.Data.Converters; global using Avalonia.Input; global using Avalonia.Interactivity; global using Avalonia.Media; diff --git a/MapControl/Shared/TypeConverters.cs b/MapControl/Shared/TypeConverters.cs index 9f94b41b..53d0e37a 100644 --- a/MapControl/Shared/TypeConverters.cs +++ b/MapControl/Shared/TypeConverters.cs @@ -1,10 +1,22 @@ using System; using System.ComponentModel; using System.Globalization; +#if WPF +using System.Windows.Data; +#elif UWP +using Windows.UI.Xaml.Data; +#elif WINUI +using Microsoft.UI.Xaml.Data; +#endif +#if UWP || WINUI +using ConverterCulture = System.String; +#else +using ConverterCulture = System.Globalization.CultureInfo; +#endif namespace MapControl { - public class LocationConverter : TypeConverter + public class LocationConverter : TypeConverter, IValueConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { @@ -13,11 +25,21 @@ namespace MapControl public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - return Location.Parse((string)value); + return Location.Parse(value.ToString()); + } + + public object Convert(object value, Type targetType, object parameter, ConverterCulture culture) + { + return Location.Parse(value.ToString()); + } + + public object ConvertBack(object value, Type targetType, object parameter, ConverterCulture culture) + { + return value.ToString(); } } - public class LocationCollectionConverter : TypeConverter + public class LocationCollectionConverter : TypeConverter, IValueConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { @@ -26,11 +48,21 @@ namespace MapControl public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - return LocationCollection.Parse((string)value); + return LocationCollection.Parse(value.ToString()); + } + + public object Convert(object value, Type targetType, object parameter, ConverterCulture culture) + { + return LocationCollection.Parse(value.ToString()); + } + + public object ConvertBack(object value, Type targetType, object parameter, ConverterCulture culture) + { + return value.ToString(); } } - public class BoundingBoxConverter : TypeConverter + public class BoundingBoxConverter : TypeConverter, IValueConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { @@ -39,11 +71,21 @@ namespace MapControl public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - return BoundingBox.Parse((string)value); + return BoundingBox.Parse(value.ToString()); + } + + public object Convert(object value, Type targetType, object parameter, ConverterCulture culture) + { + return BoundingBox.Parse(value.ToString()); + } + + public object ConvertBack(object value, Type targetType, object parameter, ConverterCulture culture) + { + return value.ToString(); } } - public class TileSourceConverter : TypeConverter + public class TileSourceConverter : TypeConverter, IValueConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { @@ -52,7 +94,17 @@ namespace MapControl public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { - return TileSource.Parse((string)value); + return TileSource.Parse(value.ToString()); + } + + public object Convert(object value, Type targetType, object parameter, ConverterCulture culture) + { + return TileSource.Parse(value.ToString()); + } + + public object ConvertBack(object value, Type targetType, object parameter, ConverterCulture culture) + { + return value.ToString(); } } } diff --git a/MapControl/UWP/MapControl.UWP.csproj b/MapControl/UWP/MapControl.UWP.csproj index f1a2b58c..970eef71 100644 --- a/MapControl/UWP/MapControl.UWP.csproj +++ b/MapControl/UWP/MapControl.UWP.csproj @@ -188,6 +188,9 @@ TransverseMercatorProjection.cs + + TypeConverters.cs + ViewportChangedEventArgs.cs @@ -278,9 +281,6 @@ Tile.WinUI.cs - - ValueConverters.cs - diff --git a/MapControl/WinUI/MapControl.WinUI.csproj b/MapControl/WinUI/MapControl.WinUI.csproj index e70c9af9..1ae27f33 100644 --- a/MapControl/WinUI/MapControl.WinUI.csproj +++ b/MapControl/WinUI/MapControl.WinUI.csproj @@ -17,11 +17,6 @@ - - - - - diff --git a/MapControl/WinUI/ValueConverters.cs b/MapControl/WinUI/ValueConverters.cs deleted file mode 100644 index 657c0556..00000000 --- a/MapControl/WinUI/ValueConverters.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -#if UWP -using Windows.UI.Xaml.Data; -#elif WINUI -using Microsoft.UI.Xaml.Data; -#endif - -namespace MapControl -{ - public class LocationConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, string language) - { - return Location.Parse(value.ToString()); - } - - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - return value.ToString(); - } - } - - public class LocationCollectionConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, string language) - { - return LocationCollection.Parse(value.ToString()); - } - - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - return value.ToString(); - } - } - - public class BoundingBoxConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, string language) - { - return BoundingBox.Parse(value.ToString()); - } - - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - return value.ToString(); - } - } - - public class TileSourceConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, string language) - { - return TileSource.Parse(value.ToString()); - } - - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - return value.ToString(); - } - } -}