Я знаю, что это старый вопрос, но он был первым, который появился в моих результатах поиска. Я нашел общий способ привязки переключателей к перечислению, или даже к строке или числу и т. Д.
private void AddRadioCheckedBinding<T>(RadioButton radio, object dataSource, string dataMember, T trueValue)
{
var binding = new Binding(nameof(RadioButton.Checked), dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);
binding.Parse += (s, a) => { if ((bool)a.Value) a.Value = trueValue; };
binding.Format += (s, a) => a.Value = ((T)a.Value).Equals(trueValue);
radio.DataBindings.Add(binding);
}
И затем либо в конструкторе вашей формы, либо в событии загрузки формы, вызовите его для каждого из ваших RadioButton
элементов управления.
dataSource
- это объект, содержащий ваше свойство enum. Я убедился, что в dataSource
реализован интерфейс INotifyPropertyChanged
, запускающий событие OnPropertyChanged
в параметре enum properties.
AddRadioCheckedBinding(Choice1RadioButton, dataSource, "MyChoice", MyChoices.Choice1);
AddRadioCheckedBinding(Choice2RadioButton, dataSource, "MyChoice", MyChoices.Choice2);