2010-10-07 11 views
7

Voglio provare qualcosa di diverso e sto tentando di visualizzare una sovrapposizione sulla mia attuale GUI WPF che consente all'utente di interagire ancora con la GUI, ma fornisce uno strato di fastidio per far loro sapere che qualcosa sta succedendo.Alla ricerca di una buona soluzione WPF per un overlay click-through trasparente

La mia domanda è in realtà due questioni distinte:

1. Come fare la sovrapposizione?

Il mio primo tentativo è stato quello di utilizzare un rettangolo, impostare il riempimento per il colore appropriato, e quindi modificare l'opacità. Ma non è trasparente ai click-through. Quindi, penso che quello che voglio fare, in base ai risultati della ricerca, è creare una finestra separata, impostarne lo sfondo su Trasparente e quindi impostare AllowsTransparency su True. Mentre questo funziona, se voglio fare qualcosa come Background="DarkRed" Opacity="0.2", i click-through non funzionano più.

E questo mi porta alla seconda parte:

2. Qual è il modo giusto per ridimensionare questa regione di sovrapposizione se sto usando MVVM?

La mia finestra principale crea il ViewModel, che crea il modello. Il modello è l'unica cosa che sa se l'overlay deve essere visualizzato o meno. Ma la finestra principale ovviamente è l'unica cosa che conosce le sue dimensioni, e il Modello non sa mai nulla di sopra. L'unico modo per ottenere questo è di catalogare la dimensione della finestra di overlay sulle proprietà nel ViewModel, e poi il ViewModel impostare questi valori ogni volta che la dimensione della finestra principale cambia?

Chiunque ha indizi su come posso ottenere tutte queste cose?

risposta

14

Per indirizzare la parte 1: imposta IsHitTestVisible="False" sull'overlay, che si tratti di un rettangolo, un bordo o qualche altro elemento. Ciò ti consentirà di ottenere qualsiasi livello di colore e trasparenza che desideri senza influire sull'interazione con i controlli sottostanti.

Parte 2: non utilizzare una finestra separata. Se si mantiene la sovrapposizione nella finestra principale, è possibile fare affidamento sul layout nella vista per gestire automaticamente il ridimensionamento della sovrapposizione.

+0

Sì, mi è piaciuto l'approccio Rettangolo, ma non riuscivo a capirlo. HitTest non sembrava la cosa giusta da fare, ma proveremo ora! Grazie. – Dave

+0

Funziona completamente. MOLTO meglio dell'approccio Window. Grazie! Sto amando IsHitTestVisible. :) – Dave

Problemi correlati