mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Fixed default MapItem style, made ParentMap attached property read-only.
This commit is contained in:
parent
022e246ebe
commit
fbeb01fca3
|
|
@ -108,7 +108,7 @@ namespace MapControl
|
||||||
MaxZoomLevel = 20;
|
MaxZoomLevel = 20;
|
||||||
AddVisualChild(tileContainer);
|
AddVisualChild(tileContainer);
|
||||||
TileLayers = new TileLayerCollection();
|
TileLayers = new TileLayerCollection();
|
||||||
SetValue(ParentMapProperty, this);
|
SetValue(ParentMapPropertyKey, this);
|
||||||
|
|
||||||
Loaded += (o, e) =>
|
Loaded += (o, e) =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
static MapElement()
|
static MapElement()
|
||||||
{
|
{
|
||||||
MapPanel.ParentMapProperty.OverrideMetadata(typeof(MapElement),
|
MapPanel.ParentMapPropertyKey.OverrideMetadata(typeof(MapElement),
|
||||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits, ParentMapPropertyChanged));
|
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits, ParentMapPropertyChanged));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,11 @@ namespace MapControl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MapPanel : Panel
|
public class MapPanel : Panel
|
||||||
{
|
{
|
||||||
public static readonly DependencyProperty ParentMapProperty = DependencyProperty.RegisterAttached(
|
internal static readonly DependencyPropertyKey ParentMapPropertyKey = DependencyProperty.RegisterAttachedReadOnly(
|
||||||
"ParentMap", typeof(Map), typeof(MapPanel),
|
"ParentMap", typeof(Map), typeof(MapPanel),
|
||||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits, ParentMapPropertyChanged));
|
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits, ParentMapPropertyChanged));
|
||||||
|
|
||||||
public static readonly DependencyProperty LocationProperty = DependencyProperty.RegisterAttached(
|
public static readonly DependencyProperty ParentMapProperty = ParentMapPropertyKey.DependencyProperty;
|
||||||
"Location", typeof(Location), typeof(MapPanel),
|
|
||||||
new FrameworkPropertyMetadata(LocationPropertyChanged));
|
|
||||||
|
|
||||||
private static readonly DependencyPropertyKey ViewportPositionPropertyKey = DependencyProperty.RegisterAttachedReadOnly(
|
private static readonly DependencyPropertyKey ViewportPositionPropertyKey = DependencyProperty.RegisterAttachedReadOnly(
|
||||||
"ViewportPosition", typeof(ViewportPosition), typeof(MapPanel),
|
"ViewportPosition", typeof(ViewportPosition), typeof(MapPanel),
|
||||||
|
|
@ -30,6 +28,10 @@ namespace MapControl
|
||||||
|
|
||||||
public static readonly DependencyProperty ViewportPositionProperty = ViewportPositionPropertyKey.DependencyProperty;
|
public static readonly DependencyProperty ViewportPositionProperty = ViewportPositionPropertyKey.DependencyProperty;
|
||||||
|
|
||||||
|
public static readonly DependencyProperty LocationProperty = DependencyProperty.RegisterAttached(
|
||||||
|
"Location", typeof(Location), typeof(MapPanel),
|
||||||
|
new FrameworkPropertyMetadata(LocationPropertyChanged));
|
||||||
|
|
||||||
public MapPanel()
|
public MapPanel()
|
||||||
{
|
{
|
||||||
ClipToBounds = true;
|
ClipToBounds = true;
|
||||||
|
|
@ -45,6 +47,11 @@ namespace MapControl
|
||||||
return (Map)element.GetValue(ParentMapProperty);
|
return (Map)element.GetValue(ParentMapProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ViewportPosition GetViewportPosition(UIElement element)
|
||||||
|
{
|
||||||
|
return (ViewportPosition)element.GetValue(ViewportPositionProperty);
|
||||||
|
}
|
||||||
|
|
||||||
public static Location GetLocation(UIElement element)
|
public static Location GetLocation(UIElement element)
|
||||||
{
|
{
|
||||||
return (Location)element.GetValue(LocationProperty);
|
return (Location)element.GetValue(LocationProperty);
|
||||||
|
|
@ -55,11 +62,6 @@ namespace MapControl
|
||||||
element.SetValue(LocationProperty, value);
|
element.SetValue(LocationProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ViewportPosition GetViewportPosition(UIElement element)
|
|
||||||
{
|
|
||||||
return (ViewportPosition)element.GetValue(ViewportPositionProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override Size MeasureOverride(Size availableSize)
|
protected override Size MeasureOverride(Size availableSize)
|
||||||
{
|
{
|
||||||
Size infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
|
Size infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
|
||||||
|
|
@ -128,6 +130,25 @@ namespace MapControl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void ViewportPositionPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
UIElement element = obj as UIElement;
|
||||||
|
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
ViewportPosition position = (ViewportPosition)eventArgs.NewValue;
|
||||||
|
|
||||||
|
if (position != null)
|
||||||
|
{
|
||||||
|
ArrangeElement(element, position);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
element.Arrange(new Rect());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void LocationPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
|
private static void LocationPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
UIElement element = obj as UIElement;
|
UIElement element = obj as UIElement;
|
||||||
|
|
@ -154,25 +175,6 @@ namespace MapControl
|
||||||
element.SetValue(ViewportPositionPropertyKey, viewportPosition);
|
element.SetValue(ViewportPositionPropertyKey, viewportPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ViewportPositionPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs eventArgs)
|
|
||||||
{
|
|
||||||
UIElement element = obj as UIElement;
|
|
||||||
|
|
||||||
if (element != null)
|
|
||||||
{
|
|
||||||
ViewportPosition position = (ViewportPosition)eventArgs.NewValue;
|
|
||||||
|
|
||||||
if (position != null)
|
|
||||||
{
|
|
||||||
ArrangeElement(element, position);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
element.Arrange(new Rect());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool ArrangeElement(UIElement element, ViewportPosition viewportPosition)
|
private static bool ArrangeElement(UIElement element, ViewportPosition viewportPosition)
|
||||||
{
|
{
|
||||||
MapPanel panel = VisualTreeHelper.GetParent(element) as MapPanel;
|
MapPanel panel = VisualTreeHelper.GetParent(element) as MapPanel;
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,6 @@
|
||||||
</Setter>
|
</Setter>
|
||||||
</Style>
|
</Style>
|
||||||
<Style x:Key="{x:Type map:MapItem}" TargetType="{x:Type map:MapItem}">
|
<Style x:Key="{x:Type map:MapItem}" TargetType="{x:Type map:MapItem}">
|
||||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="{x:Type map:MapItem}">
|
<ControlTemplate TargetType="{x:Type map:MapItem}">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue