Ich habe ein einfaches WPF-Popup, das ich zeige, wenn der Benutzer auf einen Button klickt.
%Vor%Was extrem seltsam ist ... ist, dass dieser Code je nachdem, auf welchem Rechner er läuft, anders funktioniert.
Ich lasse diesen Code auf meinem Hauptdesktop laufen und alles funktioniert gut ... und wie es sollte. Ich führe es auf meinem PDC09 Netbook ... und das Popup zeigt gegenüber (links statt der rechten, wie ich es mit der Placement-Eigenschaft gesagt).
Warum ist das? Und was kann ich dagegen tun?
Ich konnte nichts über Google finden ... aber eine glückliche Suche im WPF-Forum , schnell gefunden Beitrag . Hinweis an mich selbst: Vergessen Sie nicht, in den WPF-Foren zu suchen, wenn Google nichts findet.
Die Antwort ist, dass mein PDC09 Netbook im Grunde ein Tablet PC ist, und Microsoft fand es offensichtlich eine gute Idee, das Popup gegenüber der Placement-Eigenschaft auf einem Tablet PC zu zeigen, der für Rechtshänder konfiguriert ist. so dass das Popup nicht unter der Hand des Benutzers erscheint.
Die Lösung besteht darin, zu einer benutzerdefinierten Popup-Platzierung zurückzukehren ... wenn Sie dieses Verhalten nicht möchten.
Ich würde gerne von anderen Wegen zu diesem Problem hören.
Ich habe dieses Problem behoben, indem ich einen Rahmen im selben Raster als das gewünschte Placement-Ziel hinzugefügt habe. Legen Sie dann stattdessen das Placement-Ziel fest. Durch das Binden der Breite dieses Randes an den Popup-Inhalt wird seine Breite automatisch angepasst, daher ist die Ausrichtung (links oder rechts) irrelevant. Wenn Sie die Ausrichtung weiterhin steuern möchten, können Sie dies tun, indem Sie den Zielrahmen für die Platzierung ausrichten. Hoffnung, die Sinn macht, wenn nicht, hier ist ein schnelles Beispiel.
%Vor%Das Popup-PlacementTarget bindet an den PopupTarget-Rahmen, und die PopupTarget-Rahmenbreite wird an das PopupBorder-Element gebunden. Dies hat zur Folge, dass das PopupTarget die gleiche Breite wie das Popup hat und somit das Ausrichtungsproblem negiert.