Menü 1 für Einsteiger: UI-Elemente der Mausposition finden
Bei Anwendungen mit Drag-and-Drop-Funktionalität wird oft das Auffinden von UI-Elementen benötigt. Dazu wird in Silverlight der VisualTreeHelper bereitgestellt. Dieser ermöglicht mit der Methode FindElementsInHostCoordinates das Erkennen von UI-Elementen an einer beliebigen Position. Als Position dient auch die Mausposition. Die kann von MouseEventArgs mit der Property GetPosition an VisualTreeHelper weitergegeben werden. Somit wäre bei einem Drag-and-Drop-Szenario ein Unterbieten des Drag-Verhaltens an bestimmten Stellen der UI möglich. Unter Listing 1 wird verdeutlicht, wie beim Überqueren der UI mit der Maus eine automatische Meldung aufblinkt, falls ein Button darunterliegt.
Listing 1: Das Aufspüren von UI-Elementen an der Mausposition
public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); MouseMove += MainPageMouseMove; } public void MainPageMouseMove(object sender, MouseEventArgs e) { if (IsButtonElementMouseOver(e.GetPosition(null))) { MessageBox.Show("Maus über den Button!"); } } public bool IsButtonElementMouseOver(Point mouseposition) { var elements = VisualTreeHelper.FindElementsInHostCoordinates(mouseposition, this); var buttons = from element in elements where element is Button select element; return buttons.Count() > 0; } }
Hinterlasse einen Kommentar
Hinterlasse den ersten Kommentar!