WinUI value converters

This commit is contained in:
ClemensFischer 2025-08-14 13:11:25 +02:00
parent e006cbedc6
commit 933cb7f2ba
6 changed files with 83 additions and 32 deletions

View file

@ -40,6 +40,11 @@ namespace MapControl
public virtual Location Center => new Location((South + North) / 2d, (West + East) / 2d);
public override string ToString()
{
return string.Format(CultureInfo.InvariantCulture, "{0},{1},{2},{3}", South, West, North, East);
}
/// <summary>
/// Creates a BoundingBox instance from a string containing a comma-separated sequence of four or five floating point numbers.
/// </summary>

View file

@ -48,20 +48,22 @@ namespace MapControl
Add(new Location(latitude, longitude));
}
public override string ToString()
{
return string.Join(" ", this.Select(l => l.ToString()));
}
/// <summary>
/// Creates a LocationCollection instance from a string containing a sequence
/// of Location strings that are separated by a spaces or semicolons.
/// </summary>
public static LocationCollection Parse(string locations)
{
if (string.IsNullOrEmpty(locations))
{
return new LocationCollection();
}
var strings = locations.Split(new char[] { ' ', ';' }, StringSplitOptions.RemoveEmptyEntries);
return new LocationCollection(strings.Select(l => Location.Parse(l)));
return string.IsNullOrEmpty(locations)
? new LocationCollection()
: new LocationCollection(locations
.Split(new char[] { ' ', ';' }, StringSplitOptions.RemoveEmptyEntries)
.Select(Location.Parse));
}
/// <summary>

View file

@ -89,6 +89,11 @@ namespace MapControl
return ImageLoader.LoadImageAsync(buffer);
}
public override string ToString()
{
return UriTemplate;
}
/// <summary>
/// Creates a TileSource instance from an Uri template string.
/// </summary>

View file

@ -278,8 +278,8 @@
<Compile Include="..\WinUI\Tile.WinUI.cs">
<Link>Tile.WinUI.cs</Link>
</Compile>
<Compile Include="..\WinUI\TileSourceConverter.cs">
<Link>TileSourceConverter.cs</Link>
<Compile Include="..\WinUI\ValueConverters.cs">
<Link>ValueConverters.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TileImageLoader.UWP.cs" />

View file

@ -1,22 +0,0 @@
using System;
#if UWP
using Windows.UI.Xaml.Data;
#elif WINUI
using Microsoft.UI.Xaml.Data;
#endif
namespace MapControl
{
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)
{
throw new NotSupportedException();
}
}
}

View file

@ -0,0 +1,61 @@
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();
}
}
}