views:

173

answers:

2

I have a whole bunch of code that is dependent on the ComboBox type, and I want to be able to use it on a new UI, but the UI that I want to use it for needs to look like a RadioButton for usability reasons. Is it possible to have a ComboBox control look like a set of RadioButtons?

A: 

You could build a new UserControl that has many of the same methods that the ComboBox class does, but adapt it so that it creates multiple radio boxes instead.

Your question is kinda vague though.

IE create an Items collection on your user control, and when something is added, draw a radio box and resize your control, instead of what a combo box does and just adds a string to the list.

Then all you have to do is find and replace all your references to ComboBox with RadioIFiedComboBox.

Heres some comparison:

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

or

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

and

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

The code above is just an example, you'd have to create all the methods you use in the ComboBox class and create similar functionality.

snicker
+2  A: 

My suggestion would be to use an ItemsControl with a DataTemplate that would render RadioButtons. To the ItemsControl you'd bind the same thing you're binding to the ComboBox. One caveat is that you need to set the GroupName of the radio buttons to something that would be the same to the group, so they can be mutually exclusive. Otherwise, if you don't do anything, you'll be able to select more than one RadioButton simultaneously.

Gustavo Cavalcanti
Thanks! That is close enough!
skb