Möglichkeit, ein fensterloses WPF-Fenster ziehbar zu machen, ohne InvalidOperationException zu erhalten

8

Ich habe ein Fenster weniger WPF Hauptfenster. Ich versuche es so zu machen, dass der Endbenutzer das Fenster ziehen kann.

Ich habe Folgendes zum Konstruktor des Fensters hinzugefügt:

%Vor%

Das Problem ist, ich habe ein Dialogfeld, das mit zwei Schaltflächen geöffnet wird. Wenn ich auf eine dieser Schaltflächen klicke, wird eine InvalidOperationException mit der Meldung "DragMove kann nur aufgerufen, wenn die primäre Maustaste nicht gedrückt ist" nicht behandelt.

Das wirft ein paar Fragen auf: Warum hat ein mousedown-Ereignis in einem Dialog etwas damit zu tun? Wie kann ich dies ohne diese Ausnahme tun?

Danke!

    
rsteckly 18.07.2010, 02:31
quelle

4 Antworten

7

Der 'richtige' Weg, um ein randloses Fenster beweglich zu machen, ist, HTCAPTION in der WM_NCHITTEST-Nachricht zurückzugeben. Der folgende Code zeigt, wie das geht. Beachten Sie, dass Sie HTCLIENT zurückgeben möchten, wenn sich der Cursor über bestimmten visuellen Elementen Ihres Windows befindet, so dass dieser Code nur dazu dient, Sie zu starten.

Ссылка

%Vor%     
Tergiver 18.07.2010 13:37
quelle
1

Legen Sie die MouseDown-Attributzufuhr des Fensters oder eines anderen Steuerelements fest, das Sie verwenden möchten:

%Vor%

Und implementieren Sie es in den Code dahinter:

%Vor%

Von: Ссылка

    
Web Developer 13.03.2012 17:08
quelle
0

Es gibt ein Microsoft-Projekt, das den "fensterlosen" Stil und vieles mehr beherrscht, und es ist opensource. Vielleicht sollten Sie sich einen Blick auf Ссылка . Ich verwende eine kommerzielle Finanzanwendung und habe noch keine Probleme mit einer Windows-Version festgestellt.

    
JoshVarga 29.08.2010 14:13
quelle
0

Sie können die ursprüngliche Methode überschreiben:

%Vor%     
CharlieShi 27.07.2012 16:16
quelle

Tags und Links