Dans WPF, est-il possible d'avoir un contrôle de zone de liste déroulante qui ressemble à un bouton RadioButton?

StackOverflow https://stackoverflow.com/questions/1615440

Question

J'ai tout un tas de code dépendant du type ComboBox et je veux pouvoir l'utiliser sur une nouvelle interface utilisateur, mais l'interface utilisateur pour laquelle je souhaite l'utiliser doit ressembler à un bouton radio pour la facilité d'utilisation. les raisons. Est-il possible d'avoir un contrôle ComboBox ressemblant à un ensemble de RadioButtons?

Était-ce utile?

La solution

Ma suggestion serait d'utiliser un ItemsControl avec un DataTemplate qui rendrait RadioButtons. Au ItemsControl, vous lierez la même chose que vous associez à la ComboBox. Un inconvénient est que vous devez définir le nom de groupe des boutons radio sur quelque chose qui serait identique au groupe, afin qu'ils puissent s'exclure mutuellement. Sinon, si vous ne faites rien, vous pourrez sélectionner plusieurs RadioButton simultanément.

Autres conseils

Vous pouvez créer un nouveau UserControl utilisant beaucoup des mêmes méthodes que la classe ComboBox, mais en l'adaptant de manière à créer plusieurs cases d'option.

Votre question est toutefois un peu vague.

IE crée une collection Items sur votre contrôle utilisateur et, lorsqu'un élément est ajouté, dessinez une boîte radio et redimensionnez votre contrôle, au lieu de ce que fait une liste déroulante et ajoute simplement une chaîne à la liste.

Ensuite, tout ce que vous avez à faire est de trouver et de remplacer toutes vos références à ComboBox par RadioIFiedComboBox.

Voici une comparaison:

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

ou

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

et

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
  }
}

Le code ci-dessus n'est qu'un exemple. Vous devez créer toutes les méthodes que vous utilisez dans la classe ComboBox et créer des fonctionnalités similaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top