Il miglior modo per ridefinire il control template di un controllo è farlo sulla base del suo template di default. Per conoscere il template di default, o visual tree di un controllo devi usare un software tipo wpfInspector.
wpfinspector.codeplex.com
Si clicca su un elemento e wpfinspector ti da tra le altre cose, il control template.
Ovviamente aspettati che il controltemplate di una finestra sia molto più elaborato di quello di una textbox.
Basta copiaincollare il template da wpf inspector ed effettuare le modifiche lasciandosi guidare da cio che gia c'è. Allenati su template più semplici (tipo fare una textblock bordata) per capire come funziona.
Quello che però è importante capire è che agendo sul visualtree si conservano i comportamenti del controllo. Posso agire sul template di una textbox quanto voglio ma il suo comportamento sarà quello di una textbox, non posso aggiungerne di nuovi. Lo stesso vale per tutto il resto.
Che ruolo avranno i pulsanti e le textbox che tu vuoi inserire nel controltemplate di una window? se si tratta di modificare l'aspetto della stessa e mantenere il suo comportamento allora ok altrimenti sei sulla strada sbagliata e devi ripiegare sugli usercontrol (o customControl ma raramente questi vengono scomodati)