Logo UGIdotNET

Discussione 'UserControl Wpf'

# Pubblicato il 08 nov 2009 21.10 - Rispondi
Tiziano Muratore
UserControl Wpf
Buona sera a tutti.
Da qualche mesetto, tempo permettendo, ho cominciato ad avvicinarmi al mondo WPF sviluppando una
semplicissima applicazione per mettere in pratica un pò di concetti appresi grazie al materiale trovato in rete e
sopratutto grazie ai webcast di Corrado Cavalli.

Per il momento, i miei dubbi si sono concentrati, come da oggetto del post, sugli UserControl.
Vengo al dunque.

Ho necessità che, nel momento in cui le mie textbox ricevono il focus, venga selezionato tutto il testo al loro interno.
Fin qui nessun problema .... potrei risolvere usando gli attached behavior (volendo rispettare il pattern mvvm) ma, un pò per completezza
ed un pò perche ritengo sia una soluzione più performante, ho voluto creare uno UserControl che implementasse già questa caratteristica.
Pertanto, apro Microsoft Blend, posiziono un textbox nel form .... tasto destro ---> Crea Controllo ..... e lo UserControl viene automaticamente creato
all'interno del progetto, potendo così fornire la mia textbox di tutte le funzionalità che voglio.

Il problema nasce dal fatto che non riesco a "tipizzare" il mio UserControl.
Mi spiego meglio.

Nel momento in cui lo UserControl viene creato, sparisce, ad esempio, la proprietà Text che viene sostituita da una proprietà Content impostata, di default, a (Grid) ...
nonostante io mi aspetassi che lo UserControl ereditasse da TextBox pertanto con la proprietà Text disponibile al Binding e quant'altro.

La mia domanda si riduce quindi alla seguente :
Come faccio a creare uno UserControl che erediti da TextBox(in questo caso) mantenendo pertanto tutte le caratteristiche di una TextBox?

Ovviamente, inutile dire che ho provato ad inserire la clausola "Inherits TextBox" (sviluppo in Vb) nel code behind dello UserControl, ma mi viene restituito un errore
di compilazione perchè lo userControl eredita già dalla classe base System.Windows.Controls.UserControl.

Spero possiate illuminarmi.

Jeremy.
# Pubblicato il 08 nov 2009 22.28 - Rispondi
Corrado Cavalli
Re: UserControl Wpf
Non capisco perchè semplicemente non erediti da TextBox scrivendo:
public class AutoSelectTextBox: Inherits TextBox
End Class
e poi non inserisci MyBase.SelectAll() nell'override di OnGotFocus()
# Pubblicato il 08 nov 2009 23.52 - Rispondi
Tiziano Muratore
Re: UserControl Wpf
Si in effetti è stato sufficiente creare una nuova classe che ereditasse dalla classe textbox .... il motivo per cui avevo scartato questa soluzione è dovuto al fatto che avevo anche l'intenzione di modificarne l'aspetto grafico creando una risorsa(stile) a livello di UserControl e non a livello di applicazione (o finestra che sia).
Ad ogni modo .... ciò che mi hai consigliato è sicuramente quello che mi serviva.
Grazie per l'aiuto.
Alla prossima .... magari con una domanda un pò meno banale :-).
Ciao
Jeremy.

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185