2009-07-20 12 views
0

Ich versuche, eine WPF-App zu erstellen (normale Windows-App, nicht XBAP oder Silverlight). Ich möchte, dass das Haupt-App-Fenster Transparenz unterstützt und auf dem Desktop angezeigt wird.XAML-Tooltips werden abgeschnitten

Aber wenn ich ToolTip-Text auf einer Schaltfläche angeben, erscheint die QuickInfo unter (Z-Reihenfolge) das Hauptfenster!

Ich habe einen Screenshot wo: * Eine andere App überlagert und blockiert die Ansicht des teilweise transparenten Hauptfensters. * Der Tooltip von meiner Schaltfläche erscheint vor der anderen App. * Wo die Tooltip nicht vor der anderen App ist, ist es hinter die teilweise Transparenz.

Ich habe gelesen, dass dies ein bekanntes Problem mit der WPF-Engine für 32-Bit-XP ist und nicht in Vista auftritt.

Was ich suche ist ein Fix/Workaround.

Antwort

0

Ok- hier ist, was ich als Behelfslösung gefunden:

Das Problem mit Quick-Info geht weg, wenn das Fenster auch TopMost gemacht wird.

Aber ich will nicht mein Fenster oberste sein, so tue ich es nur, wenn mein Fenster den Tastaturfokus hat:

private void Window_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
{ 
    this.Topmost = true; 
} 

private void Window_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
{ 
    this.Topmost = false; 
} 

Dann benutze ich eine Bindung jedes ToolTip nur zu aktivieren, wenn mein Fenster Topmost ist :

Dadurch wird die QuickInfo deaktiviert, außer wenn es richtig funktioniert. Brauche keine Tooltips, wenn mein Fenster trotzdem nicht scharf ist.

Nur nerviges Ding ist jetzt, dass die Ein/Ausbindung an jedem Element gemacht werden muss, das einen Tooltip definiert.

0

Probieren Sie die .SetValue (Canvas.ZIndex, 100) -Methode für das UIElement, das Sie oben möchten. (Ich verwendete 100, nur um das Element an die Spitze zu zwingen)

+0

Funktioniert nicht, wenn ich kein Canvas zum Rendern des Fensters verwende. –

+1

Die Verwendung eines Canvas hat nichts mit der Canvas.ZIndex DependencyProperty zu tun (so intuitiv das klingt) – Janie

0

Dies ist ein bekanntes Problem von Windows XP und WPF (z. B. siehe hier on Connect).

Sie können das Problem vermeiden, indem Sie verwenden kein geschichtetes Fenster (verwenden Sie eins mit einem Rahmen). Ich denke, eine andere Lösung wäre, das ganze Fenster zu setzen TopMost = true, aber für mich ist das keine sehr gute Lösung, und ich bin mir nicht sicher.

Ich weiß nicht, ob MS dieses Problem angeht, weil ich denke, es ist ziemlich tief in der grafischen Schicht von XP.

+0

Mein Eindruck ist, dass es überhaupt nicht in der XP-Grafikebene ist - es sieht eher so aus, als ob WPF eine ganze zweite Desktop-Ebene über den native XP (Win32) Grafiken - aber schneidet es passend ab, wo WPF "sichtbar" sein sollte. So arbeiteten frühe 3D- und Film-Beschleuniger, wenn sie "gefenstert" wurden. –

+0

Nun, das weiß ich nicht. Aber ich weiß, dass es nicht nur ein Clipping-Problem ist. Selbst wenn sich der Tooltip vollständig im WPF-Fensterbereich befindet, kann es vorkommen, dass die Tooltips hinter der Anwendung stehen.Sie können das mit einem Tool wie Snoop sehen, oder wenn der Tooltip lang genug ist, um über die Grenzen des WPF-Fensters zu gehen. – dalind

Verwandte Themen