Можно ли в WPF иметь элемент управления со списком, который выглядит как RadioButton? - PullRequest
0 голосов
/ 23 октября 2009

У меня есть целый набор кода, который зависит от типа ComboBox, и я хочу иметь возможность использовать его на новом пользовательском интерфейсе, но пользовательский интерфейс, для которого я хочу использовать его, должен выглядеть как RadioButton для удобства использования причины. Возможно ли, чтобы элемент управления ComboBox выглядел как набор радиокнопок?

Ответы [ 2 ]

2 голосов
/ 24 октября 2009

Я бы предложил использовать ItemsControl с DataTemplate, который бы отображал RadioButtons. К ItemsControl вы привязываете то же самое, что привязываете к ComboBox. Одно предостережение: вам нужно установить GroupName переключателей на то, что будет одинаковым для группы, чтобы они могли быть взаимно исключающими. В противном случае, если вы ничего не сделаете, вы сможете выбрать более одной кнопки RadioButton одновременно.

0 голосов
/ 23 октября 2009

Вы можете создать новый UserControl, который имеет многие из тех же методов, что и класс ComboBox, но адаптирует его так, чтобы вместо него создавалось несколько радиоблоков.

Хотя ваш вопрос довольно неопределенный.

IE создает коллекцию Предметов на вашем пользовательском элементе управления, и когда что-то добавляется, нарисуйте переключатель и измените размер элемента управления вместо того, что делает поле со списком и просто добавляет строку в список.

Тогда все, что вам нужно сделать, это найти и заменить все ваши ссылки на ComboBox на RadioIFiedComboBox.

Вот некоторые сравнения:

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

или

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

и

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

Приведенный выше код является лишь примером, вам нужно создать все методы, которые вы используете в классе ComboBox, и создать аналогичную функциональность.

...