Frage

Ich versuche zu stoppen Mausereignisse in WPF durch ein obersten, transparente nicht-modale Fenster. Ich finde, dass dies funktioniert gut, wenn die Trübung des Fensters 0,01 oder größer ist, und es hat eine Hintergrundfarbe, aber wenn die Opazität auf 0 gesetzt ist es nicht mehr empfängt Meldungen von der Maus. Gibt es eine Möglichkeit das Fenster vollständig transparent aussehen und noch Mauseingaben bekommen?

War es hilfreich?

Lösung

Soweit ich weiß, nein.

Wenn ein Control oder Window vollständig transparent ist, kann sie dann durch angeklickt werden. Dies ist der Fall, wenn Sie Ihre Window.Background="Transparent" oder Opacity="0" gesetzt. Soweit ich weiß, ist dies durch Design in WPF.

Wenn eine Opazität von 0,01 verwenden, sollten Sie kaum das Fenster sehen, wenn überhaupt. Dies ist wahrscheinlich die beste Wahl bei der Funktionalität zu erreichen.

Edit: Eine andere Lösung, die ich ausprobiert und funktioniert, ist die Hintergrundfarbe auf eine fast transparente Farbe einzustellen. Ich benutzte Background="#01000000", wodurch ein Alpha-Wert von 1. Angabe Das macht Ihre Fenster Hintergrund transparent aussehende, sondern ermöglicht es Ihnen Kontrollen mit dem Fenster mit voller Opazität zu stellen.

Andere Tipps

In Visual Studio 2010: Wählen Sie ein Fenster in Ihrem Design-Ansicht.

Legen Sie die Eigenschaften des Fensters an:

  • AllowsTransparency: check it
  • Hintergrund: Transparent
  • Window: Keine

Just gesetzt Hintergrund = Brushes.Transparent statt Background = null.

Sie müssen keine Opazität verwenden überhaupt (dh. Nur lassen Sie es bei 100% Opazität).

Zum Beispiel denke ich, Ihre Steuer Name MyGrid ist und Sie wollen es Transparent werden und immer bekommen MouseOverEvent .....

Wenn (Fenster AllowsTransparency ist True und das Fenster Background ist Transparent) Dann

  

eine Farbe wie #01777777 für MyGrid Background oder 0.01 für MyGrid Opacity.

Else

  

so etwas wie #00777777 für MyGrid Background oder 0.00 für MyGrid Opacity.

Einstellen der Opazität auf 100% (oder einen Nicht-Null-Wert) und den Hintergrund Transparent (anstelle von null) sollten die meisten Kontrollen akzeptierbar machen.

Stellen Sie sicher, setzen IsHitTestVisible auf true. Nicht alle Kontrollen getroffen werden können, auch wenn die Opazität 100% und der Hintergrund ist transparent.

Sie finden es möglicherweise einfacher Mouse.Capture zu verwenden.

https://msdn.microsoft.com/en-us/library/ ms771301.aspx

  

Wenn ein Objekt mit der Maus erfasst, alle Maus bezogene Ereignisse werden so behandelt, als ob das Objekt mit der Maus capture das Ereignis durchführen, auch wenn sich der Mauszeiger über ein anderes Objekt ist.

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