2009-09-24 12 views
12

Attualmente sto imparando WPF. Mi sto davvero divertendo finora. Mi piace quanto sia facile creare app dall'aspetto eccezionale e vorrei creare un'app con un bordo finestra personalizzato. Vorrei per farlo sembrare qualcosa di simile:Creazione di moduli personalizzati in WPF?

So che potrei semplicemente cambiare facilmente il tipo di finestra di non avere un confine e passare da lì, ma che sembra molto simile a WinForms. Non sarebbe meglio semplicemente creare una classe derivata da Window e stilizzata? Se sì, come posso fare questo? Grazie!

risposta

15

Ecco un grande articolo sulla personalizzazione Window "chrome" con WPF:

Custom Window Chrome in WPF

Esso è accompagnato da un progetto di Code Gallery da cui è possibile scaricare il codice:

WPF Chrome

3

Per mostrare i bordi non standard è necessario impostare AllowsTransparency = True e nessun Border dalla finestra. Se vuoi farlo nella classe dipende da te. Fondamentalmente devi capire che WPF è in realtà solo un'applicazione DirectX ospitata in una finestra standard. Pertanto, se si desidera un comportamento non standard di Windows, è necessario eliminare il bordo della finestra standard e iniziare a ricollegarlo in base agli eventi della finestra standard che si desidera gestire. Trascinando, minimizza/massimizza/ripristina, barra del titolo.

In realtà, non ci dovrebbero volere più di 30 minuti a un'ora per trovare qualcosa di simile a quello che si desidera, e si potrebbe certamente mettere la finestra personalizzata in una classe base per il riutilizzo in fondo alla strada .

Ho la sensazione, per la maggior parte dei casi, questa sarà l'opzione migliore e più veloce rispetto a provare a sovrascrivere il disegno di default di Windows.

+0

Prestare attenzione all'accessibilità ecc. Se si reinventa la barra del titolo della finestra standard. In che modo uno strumento di accessibilità saprà come chiudere una finestra, ecc.? Tuttavia non ti può interessare la tua applicazione. –

0

C'è un prodotto chiamato "Blendables" che contiene un controllo ChromelessWindow nel pacchetto "Essentials Mix" che rende questo molto facile da fare. Non l'ho mai usato davvero, so solo che esiste e ho pensato che potesse essere utile. Al minimo dimostra che puoi fare ciò che chiedi sulla creazione di chrome riutilizzabile e templabile.

Problemi correlati