Benutzer mit den meisten Antworten
Cursor in UserControl abfragen

Frage
-
Hallo!
Ich möchte in einem UserControl den akt. Cursor eines Elementes des UserControl abfragen:
private void lbGW_Tag_MouseEnter(object sender, MouseEventArgs e) { if (this.Cursor == Cursors.Pen) // Nur reagieren, wenn der Markiermodus aktiv ist
this beinhaltet eine Referenz auf das UserControl.
Als Ergebnis erhalte ich aber immer null!
Wie kann ich den den akt. Cursor des Elements des UserControl (in einer Methode des UserControl) abrufen??
Fred
- Bearbeitet perlfred Samstag, 2. März 2013 09:26 Erweiterung Code
Antworten
-
Das sollte dann mit dem VisualTreeHelper gehen:
DependencyObject parent= VisualTreeHelper.GetParent(this);
UserControl leitet sich von DependencyObject ab, genauso wie (fast) alle anderen anzeigbaren Elemente auch.Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets
- Als Antwort vorgeschlagen Ionut DumaModerator Donnerstag, 14. März 2013 16:18
- Als Antwort markiert Ionut DumaModerator Freitag, 15. März 2013 15:21
Alle Antworten
-
Hallo, wenn ich in einem UserControl die Cursor-Eigenschaft abfrage dann erhalte ich auch null. Wenn ich dagegen dem UserControl einen bestimmten Cursor zuweise, dann bekomme ich Ihn auch von er Eigenschaft zurück geliefert.
Abfrage:
var v= this.Cursor;
Im 1. Versuch null zur Debugzeit.
Mit zuweisung des Cursors:<UserControl x:Class="WpfApplication90.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Cursor="IBeam" d:DesignHeight="300" d:DesignWidth="300"> <Grid><Button Click="OnClick" Height="30" Width="50"/></Grid> </UserControl>
Ich erhalte IBeam als Wert für Cursor bei der Abfrage.Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets
-
Hallo Koopakiller!
Danke! für deine immer wieder überraschenden Lösungsvorschläge!!
Mein Problem ist allerdings noch ein wenig anders.
Allgemein ausgedrückt:
Wie greife ich auf die Propertys des Objektes von dem das UserControl aufgerufen wurde, im UserControl zu?Zu obigen Beispiel. Ich möchte ja nicht den Cursor des UserControl setzen sondern den akt. Cursor des Objektes, das das UserControl aufruft, abfragen.
Wenn ich eine Referenz auf den Container (Fenster) des Objektes das das UserControl aufruft, dem UserControl als Eigenschaft übergebe, kann ich den Cursor abfragen.
Cursor curAktMausZeiger = ((Gaestewohnung.Window1)oRef_Container).Cursor;
Dazu muss ich aber die Referenz (oRef_Container) immer in die spezifische Klasse des aufrufenden Containers casten! Da das UserControl allgemeingültig benutzt werden soll, habe ich da ein Problem.
Und ihr eine Lösung ;-)) ?
Nachtrag: Der Cursor des aufrufenden Objektes wird natürlich dynamisch zur Laufzeit geändert, worauf ich im UserControl reagieren muss.- Bearbeitet perlfred Montag, 4. März 2013 09:15 Konkretisierung
-
Das sollte dann mit dem VisualTreeHelper gehen:
DependencyObject parent= VisualTreeHelper.GetParent(this);
UserControl leitet sich von DependencyObject ab, genauso wie (fast) alle anderen anzeigbaren Elemente auch.Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets
- Als Antwort vorgeschlagen Ionut DumaModerator Donnerstag, 14. März 2013 16:18
- Als Antwort markiert Ionut DumaModerator Freitag, 15. März 2013 15:21