Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [WPF] Convertire una TextBox in ComboBox

    Salve a tutti.
    Ho creato un custom control che eredita dalla classe TextBox. In alcuni casi, mi serve che questo controllo sia una combobox e per fare questo utilizzo un ControlTemplate.
    Ora vorrei che questo ControlTemplate sia generico ed applicabile per qualsiasi dei miei controlli. Il problema è che l'oggetto TextBox non ha le proprietà di ComboBox(DisplayMemberPath,ItemsSource,SelectedVal uePath etc..).
    Devo aggiungere le proprietà al mio oggetto o c'è un altro modo?
    La differenza fra un cammello e un uomo? Il cammello può lavorare una settimana senza bere. L'uomo può bere una settimana senza lavorare. (Julian Tuwim)

    A casa mia non si mangia mai a stomaco vuoto!!!

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    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.

  3. #3
    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.
    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.

    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.
    La differenza fra un cammello e un uomo? Il cammello può lavorare una settimana senza bere. L'uomo può bere una settimana senza lavorare. (Julian Tuwim)

    A casa mia non si mangia mai a stomaco vuoto!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.