In pratica i controlli personalizzati sono qualcosa che si implementa a livello di codice mentre è possibile utilizzare XAML per i controlli utente. I controlli personalizzati estendono una delle classi di base di controllo WPF e forniscono funzionalità aggiuntive tramite il codice, pertanto tutta la logica e la rappresentazione aggiunte devono essere implementate all'interno del codice.
Un controllo utente è tecnicamente un normale controllo del contenuto che è possibile estendere in alcune parti del codice ma in genere viene esteso inserendo altri controlli al suo interno. Così come Kent ha menzionato un UserControl è un'aggregazione di altri controlli. Questo limita notevolmente ciò che si può fare con un controllo utente. È più facile da usare ma più limitato rispetto a un controllo personalizzato completo.
Questi controlli hanno una piccola differenza dal punto di vista del runtime. Quando si costruisce un'applicazione e si inserisce un UserControl, l'albero di controllo avrà all'interno un modello UserControl concreto. Quindi, se consideriamo un esempio zoppo di un pulsante specializzato. Se stavi utilizzando un controllo utente, dovresti aggiungere un pulsante all'interno dell'elemento <UserControl>
. Quando si utilizza un controllo personalizzato si otterrebbe il controllo stesso da un pulsante molto probabilmente. La differenza sarebbe visibile nell'albero logico.
Mentre il controllo personalizzato fornirebbe un albero logica simile a
L'UserControl darebbe un albero logica di
Così, alla fine del UserControl è solo un ContentControl normale, che è possibile estendere un po 'e per il quale è possibile predefinire il contenuto. Il controllo personalizzato offre una maggiore flessibilità al prezzo della facilità di implementazione in quanto devi fare tutta la logica e l'interazione nel codice invece di avere il vantaggio di XAML.
Nonostante tutto questo, non penso che ci sia molta differenza nei modelli di Visual Studio. Molto probabilmente il controllo personalizzato di Visual Studio crea semplicemente un progetto con un controllo personalizzato vuoto mentre il progetto Controllo utente è un progetto con un controllo utente vuoto. È possibile aggiungere successivamente qualsiasi tipo di elementi al progetto.
Aggiornamento
e la mia opinione su quando utilizzare il controllo personalizzato e il controllo dell'utente è che se si può ottenere qualcosa fatto con un controllo utente e l'elemento di controllo extra nella struttura logica non disturbarla, utilizzare un controllo utente in quanto sono molto più facili da creare e mantenere. Utilizzare un controllo personalizzato solo se si dispone di un motivo per non utilizzare un controllo utente.
fonte
2009-04-30 16:26:39
Non dimenticare di annidare il contenuto o modificare il modello di un controllo come opzioni. È possibile apportare modifiche piuttosto drastiche a un controllo in questo modo senza dover scrivere un controllo personalizzato. – MichaC
Proprio quello che ha detto MichaC. La parte migliore di WPF è che i modelli di controllo esistenti possono avere un impatto enorme. È necessario richiedere i controlli personalizzati raramente. Diversamente da WinForms, anche le modifiche minori a un controllo richiedevano un nuovo controllo derivato. –
Ancora utile. Avere un altro distintivo d'oro – ouflak