Ich weiß, dass dies eine alte Frage ist, aber es war die erste, die in meinen Suchergebnissen auftauchte. Ich dachte, eine generische Art und Weise aus Radio-Buttons Enum zu binden, oder sogar einen String oder eine Zahl usw.
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);
}
Und dann entweder auf dem Formular Konstruktor oder auf dem Load-Ereignis Form, nennen es auf jedem Ihrer RadioButton
Kontrollen. Das dataSource
ist das Objekt, das Ihre Enum-Eigenschaft enthält. Ich stellte sicher, dass dataSource
implementiert die INotifyPropertyChanged
Schnittstelle feuert das Ereignis in der enum Eigenschaften Setter.
AddRadioCheckedBinding(Choice1RadioButton, dataSource, "MyChoice", MyChoices.Choice1);
AddRadioCheckedBinding(Choice2RadioButton, dataSource, "MyChoice", MyChoices.Choice2);