XAML-Map-Control/MapControl/MapPath.Silverlight.WinRT.cs

58 lines
1.6 KiB
C#

// XAML Map Control - https://github.com/ClemensFischer/XAML-Map-Control
// © 2017 Clemens Fischer
// Licensed under the Microsoft Public License (Ms-PL)
#if NETFX_CORE
using Windows.Foundation;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes;
#else
using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
#endif
namespace MapControl
{
public partial class MapPath : Path
{
private Geometry data;
public MapPath()
{
MapPanel.AddParentMapHandlers(this);
}
protected override Size MeasureOverride(Size constraint)
{
if (Stretch != Stretch.None)
{
Stretch = Stretch.None;
}
// Workaround for missing PropertyChangedCallback for the Data property.
if (data != Data)
{
if (data != null)
{
data.ClearValue(Geometry.TransformProperty);
}
data = Data;
if (data != null)
{
data.Transform = viewportTransform;
}
}
// Path.MeasureOverride in Windows Runtime sometimes returns an empty Size,
// whereas in Silverlight it occasionally throws an ArgumentException,
// apparently because it tries to create a Size from negative width or height,
// which result from a transformed Geometry.
// In either case it seems to be sufficient to simply return a non-zero size.
return new Size(1, 1);
}
}
}