WPF: Benutzerdefinierte Tooltip-Pfeilplatzierung

9

Ich habe einen benutzerdefinierten Tooltip-Stil, der im Grunde einen schönen schwarzen Tooltip mit einem Pfeil erzeugt, der auf den Ort des Objekts zeigt, über dem du schwebte.

Das Problem ist, dass der Tooltip manchmal nicht immer an der richtigen Stelle (d. h. in der Nähe von Fensterrändern) platziert wird, was bedeutet, dass der Tooltip-Pfeil nicht mehr auf den richtigen Platz zeigt ... Gibt es trotzdem dieses Problem? Oder kann ich spezifische Stile für jedes Standort-Placement erstellen?

%Vor%     
Chris 15.05.2013, 09:11
quelle

2 Antworten

1

Vielleicht könntest du das versuchen, ich setze einfach Placement auf Center und fügst HorizontalOffset hinzu, um mit dem Pfeil übereinzustimmen, den du in der Vorlage erstellt hast.

Dies wird jedoch nicht vertikal auf dem Steuerelement zentriert, sodass Sie IValueConverter erstellen und die Größe des Steuerelements berechnen und durch 2 teilen können, oder Sie könnten Ihrem StackPanel ein Dummy-Element hinzufügen, das dieselbe Größe hat als Border, und das sollte die ToolTip zentrieren, ohne dass Code hinter

benötigt wird %Vor%     
sa_ddam213 15.05.2013 10:23
quelle
0

Das einfachste Verfahren ist die Verwendung eines UIElement, das in der Kontrollstruktur als PlacementTarget des Tooltips vorhanden ist. Dadurch vermeiden Sie die automatische Silverlight-Positionierung, wenn Sie sich den Fensterrändern nähern:

%Vor%

In diesem Fall wird der Tooltip immer am Ursprung des LayoutRoot-Elements positioniert. Wenn Sie über eine feste Pfadgröße verfügen und sich das PlacementTarget immer an der gleichen Position befindet wie das Steuerelement, für das Sie die QuickInfo anzeigen möchten, funktioniert dies problemlos.

Wenn Sie den Tooltip relativ zum Steuerelement positionieren müssen, das den Tooltip auslöst, müssen Sie die Pfaddaten dynamisieren und den Abstand zum Erstellen eines neuen Pfads im Tooltip-Steuerelement jedes Mal berechnen, wenn der Tooltip geöffnet wird. In diesem Fall müssen Sie das Tooltip.IsOpened-Ereignis behandeln und diese Logik implementieren. Wenn Sie das PlacementTarget verwenden, wissen Sie immer die Richtung relativ zu Ihrem Steuerelement, was die Berechnung der Pfadscheitelpunkte erleichtert.

Eine andere Möglichkeit, die funktioniert, aber es ist viel komplexer, ein eigenes Popup zu implementieren, das angezeigt wird, wenn Sie die Maus über Ihr Steuerelement bewegen. Sie müssten ein paar Berechnungen implementieren, um die Position des Popups relativ zum Control zu ermitteln, was genau das Tooltip-Steuerelement für Sie ist. Das hat den Vorteil, dass Sie die Position des Tooltips und dessen Aussehen vollständig kontrollieren können.

    
tmoreira 21.08.2013 10:47
quelle

Tags und Links