Frage

Ich versuche, eine WPF-Anwendung (normale Windows-Anwendung, nicht XBAP oder Silverlight) zu machen. Ich möchte, dass die Haupt-App Fenster Transparenz unterstützen und zeigen über den Desktop unten.

Aber wenn ich ToolTip Text auf einer Schaltfläche angeben, wird die Quick-Info angezeigt unter (z-Reihenfolge) das Hauptfenster!

Ich habe einen Screenshot, wo: * Eine weitere app overlapps und blockiert Ansicht der teilweise transparenten Hauptfenster. * Der Tooltip von meiner Taste erscheint vor dem anderen App. * Wo der Tooltip nicht vor dem anderen App ist, ist es hinter die teilweise Transparenz.

Ich habe gelesen, an anderer Stelle, dass dies ein bekanntes Problem mit dem WPF-Engine ist für 32-Bit-XP und tritt nicht in Vista.

Was ich suche ist eine fix / Abhilfe.

War es hilfreich?

Lösung 3

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 ein jedes ToolTip zu ermöglichen, nur verbindlich, wenn mein Fenster ist Topmost:

ToolTipService="{Binding ElementName=MainWindow, Path=Topmost}"

Dies schaltet die Quick-Info, außer wenn es richtig funktioniert. Sie nicht wirklich brauchen, wenn Tooltips mein Fenster ohnehin nicht im Fokus ist.

Nur jetzt Ärgerliche ist, dass der Ein / Aus-Bindung an jedem Element durchgeführt werden muss, die einen Tooltip definiert.

Andere Tipps

Versuchen Sie, die .SetValue (Canvas.ZIndex, 100) Methode auf dem UIElement Sie oben wollen. (Ich habe 100, nur zu zwingen, das Element nach oben)

Dies ist ein Know Problem von Windows XP und WPF (siehe zB hier auf Connect ).

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top