La strada dell'USERCONTROL la scarto a priori in quanto in desing mode non mi permette di sfruttare le proprietà e gli eventi dei singoli controlli, a meno che l'UserControl non erediti da TextBox,Combobox etc, ma a questo punto ritorno al problema principale con la differenza che non posso applicare dei CustomTemplate ai controlli.Originariamente inviato da rsdpzed
il controltemplate ridefinisce completamente l'aspetto di un un controllo del quale conservi solo il comportamento. In pratica è il massimo della customizzazione visiva. Tu invece vuoi andare oltre, vuoi che di tanto in tanto una textbox si comporti come una combobox... non si puo fare.
Se riscrivi da zero un customcontrol la cosa è differente ma non puo essere una textbox, devi proprio riscriverne gli stati e tutto il resto...
per rispondere anche alla tua ultima domanda un control template è strettamente legato al comportamento di un controllo specifico, basta vedere il codice di un qualsiasi control template di un qualsiasi esempio su internet e capisci come funziona la faccenda: i controlli hanno comportamenti propri ma sono lookless, hanno un controltemplate di default che ne definisce la veste grafica e tu definendo un altro control-template cambi la veste grafica e basta.
I customontrol si scrivono solo quando non esistono controlli che a livello di comportamento non soddisfano nessuna delle esigenze che soddisfano i controlli esistenti. Se a te serve una textbox devi usare una textbox se ti serve una combobox devi usare una combobox. Se invece vuoi creare un controllo che in base ad una condizione a volte sia una textbox e a volte sia una combobox (cosa che ti sconsiglio vivamente) devi percorrere un altra strada (piu semplice) quella dell'USERCONTROL.
L'idea principale è quella di avere un controllo che supporti un determinato content menu(per la gestione di filtri e ordinamento),funzionalità di validazione dati etc..
e non mi piace l'idea di riscrivere e manutenere lo stesso codice per TextBox, ComboBox, checkbox etc.
Da qui l'idea di aggiungere al mio customControl le proprietà (es ComboBoxDisplayMemberPath, ComboBoxSelectedValuePath ) che mi servono per gestire il componente anche come una combobox utilizzando dei CustomTemplate.
Come ultima cosa tieni presente che lo scopo finale è quello di migrare diverse applicazioni (gestionali abbastanza grandi) scritte in VBA( ahime! ) in WPF.
Grazie per la risposta.
P.S.: mi scuso anticipatamente per eventuali imprecisioni.