Sé que esta es una pregunta anterior, pero fue la primera en aparecer en mis resultados de búsqueda. Me di cuenta de una forma genérica para unirse botones de radio para una enumeración, o incluso una cadena o un número, etc.
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);
}
Y a continuación, ya sea en el constructor de su forma o en el evento de carga del formulario, lo llaman en cada uno de sus RadioButton
controles. El dataSource
es el objeto que contiene su propiedad enum. Me aseguré de que dataSource
implementado la interfaz INotifyPropertyChanged
está activando el evento OnPropertyChanged
en el conjunto de propiedades enum.
AddRadioCheckedBinding(Choice1RadioButton, dataSource, "MyChoice", MyChoices.Choice1);
AddRadioCheckedBinding(Choice2RadioButton, dataSource, "MyChoice", MyChoices.Choice2);