mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Selection in MapItemsControl
This commit is contained in:
parent
eb263d637b
commit
3b7879e6e0
|
|
@ -14,7 +14,6 @@ using System.Windows.Controls;
|
|||
|
||||
namespace MapControl
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Manages a collection of selectable items on a Map.
|
||||
/// </summary>
|
||||
|
|
@ -66,7 +65,7 @@ namespace MapControl
|
|||
{
|
||||
SelectItems(item =>
|
||||
{
|
||||
var loc = MapPanel.GetLocation(MapItemFromItem(item));
|
||||
var loc = MapPanel.GetLocation(ContainerFromItem(item));
|
||||
return loc != null && predicate(loc);
|
||||
});
|
||||
}
|
||||
|
|
@ -75,7 +74,7 @@ namespace MapControl
|
|||
{
|
||||
SelectItems(item =>
|
||||
{
|
||||
var pos = MapPanel.GetViewportPosition(MapItemFromItem(item));
|
||||
var pos = MapPanel.GetViewportPosition(ContainerFromItem(item));
|
||||
return pos.HasValue && predicate(pos.Value);
|
||||
});
|
||||
}
|
||||
|
|
@ -85,9 +84,9 @@ namespace MapControl
|
|||
SelectItemsByPosition(p => rect.Contains(p));
|
||||
}
|
||||
|
||||
internal void MapItemClicked(MapItem mapItem, bool controlKey, bool shiftKey)
|
||||
protected internal void OnItemClicked(FrameworkElement mapItem, bool controlKey, bool shiftKey)
|
||||
{
|
||||
var item = ItemFromMapItem(mapItem);
|
||||
var item = ItemFromContainer(mapItem);
|
||||
|
||||
if (SelectionMode == SelectionMode.Single)
|
||||
{
|
||||
|
|
@ -119,7 +118,7 @@ namespace MapControl
|
|||
{
|
||||
// Extended with Shift -> select items in viewport rectangle
|
||||
|
||||
var p1 = MapPanel.GetViewportPosition(MapItemFromItem(SelectedItem));
|
||||
var p1 = MapPanel.GetViewportPosition(ContainerFromItem(SelectedItem));
|
||||
var p2 = MapPanel.GetViewportPosition(mapItem);
|
||||
|
||||
if (p1.HasValue && p2.HasValue)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
// Licensed under the Microsoft Public License (Ms-PL)
|
||||
|
||||
using Windows.System;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Input;
|
||||
|
||||
|
|
@ -24,21 +25,16 @@ namespace MapControl
|
|||
{
|
||||
e.Handled = true;
|
||||
|
||||
(ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.MapItemClicked(
|
||||
(ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.OnItemClicked(
|
||||
this, e.KeyModifiers.HasFlag(VirtualKeyModifiers.Control), e.KeyModifiers.HasFlag(VirtualKeyModifiers.Shift));
|
||||
}
|
||||
}
|
||||
|
||||
public partial class MapItemsControl
|
||||
{
|
||||
public MapItem MapItemFromItem(object item)
|
||||
public new FrameworkElement ContainerFromItem(object item)
|
||||
{
|
||||
return (MapItem)ContainerFromItem(item);
|
||||
}
|
||||
|
||||
public object ItemFromMapItem(MapItem mapItem)
|
||||
{
|
||||
return ItemFromContainer(mapItem);
|
||||
return (FrameworkElement)base.ContainerFromItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// © 2018 Clemens Fischer
|
||||
// Licensed under the Microsoft Public License (Ms-PL)
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
|
|
@ -24,21 +25,21 @@ namespace MapControl
|
|||
{
|
||||
e.Handled = true;
|
||||
|
||||
(ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.MapItemClicked(
|
||||
(ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.OnItemClicked(
|
||||
this, Keyboard.Modifiers.HasFlag(ModifierKeys.Control), Keyboard.Modifiers.HasFlag(ModifierKeys.Shift));
|
||||
}
|
||||
}
|
||||
|
||||
public partial class MapItemsControl
|
||||
{
|
||||
public MapItem MapItemFromItem(object item)
|
||||
public FrameworkElement ContainerFromItem(object item)
|
||||
{
|
||||
return (MapItem)ItemContainerGenerator.ContainerFromItem(item);
|
||||
return (FrameworkElement)ItemContainerGenerator.ContainerFromItem(item);
|
||||
}
|
||||
|
||||
public object ItemFromMapItem(MapItem mapItem)
|
||||
public object ItemFromContainer(FrameworkElement container)
|
||||
{
|
||||
return ItemContainerGenerator.ItemFromContainer(mapItem);
|
||||
return ItemContainerGenerator.ItemFromContainer(container);
|
||||
}
|
||||
|
||||
public void SelectItemsInGeometry(Geometry geometry)
|
||||
|
|
|
|||
Loading…
Reference in a new issue