В WPF возможно ли иметь элемент управления со списком, который выглядит как RadioButton?

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

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Затем все, что вам нужно сделать, это найти и заменить все ваши ссылки на 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, и создать аналогичную функциональность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top