Domanda

Ho un sacco di codice che dipende dal tipo ComboBox e voglio essere in grado di usarlo su una nuova interfaccia utente, ma l'interfaccia utente per la quale voglio usarlo deve apparire come un RadioButton per usabilità motivi. È possibile avere un controllo ComboBox simile a un set di pulsanti radio?

È stato utile?

Soluzione

Il mio suggerimento sarebbe di usare un ItemsControl con un DataTemplate che renderebbe i RadioButtons. A ItemsControl assoceresti la stessa cosa che stai vincolando a ComboBox. Un avvertimento è che è necessario impostare il GroupName dei pulsanti di opzione su qualcosa che sarebbe lo stesso per il gruppo, in modo che possano escludersi a vicenda. Altrimenti, se non fai nulla, sarai in grado di selezionare più di un RadioButton contemporaneamente.

Altri suggerimenti

È possibile creare un nuovo UserControl che abbia molti degli stessi metodi della classe ComboBox, ma adattarlo in modo da creare invece più box radio.

La tua domanda è piuttosto vaga però.

IE crea una raccolta di elementi sul controllo utente e quando viene aggiunto qualcosa, disegna una casella radio e ridimensiona il controllo, invece di fare una casella combinata e aggiunge semplicemente una stringa all'elenco.

Quindi tutto ciò che devi fare è trovare e sostituire tutti i tuoi riferimenti a ComboBox con RadioIFiedComboBox.

Ecco alcuni paragoni:

ComboBox cb = new ComboBox();
cb.Items.Add("blah");

o

RadioIFiedComboBox cb = new RadioIFiedComboBox();
cb.Items.Add("blah");

e

public class RadioIFiedComboBox : UserControl {
  public ObservableCollection<object> Items = new ObservableCollection<object>();
  public RadioIFiedComboBox() {
    Items.CollectionChanged += new NotifyCollectionChangedEventHandler(YourCollectionChanged);
  }
  private void YourCollectionChanged(){
    //do something here to redraw your controls
  }
}

Il codice sopra è solo un esempio, dovresti creare tutti i metodi che usi nella classe ComboBox e creare funzionalità simili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top