2012-07-10 68 views
2

我有一个有几个属性的对象,其中之一是CarpetColor。我也有三个单选按钮(rbRed,rbBlue, rbGreen)在他们自己的容器内的一个表单上。我想要使​​用数据绑定将对象的CarpetColor设置为检查任何按钮。vb.net中的单选按钮和数据绑定

我知道如何做一个简单的绑定,其中一个控件的属性绑定到一个对象属性。我想不出的是如何将三个控件的结果绑定到一个属性。例如,如果用户点击“红色”,则值CarpetColor应该是“红色”。同样,如果他选择“绿色”,CarpetColor的值应该变为“绿色”。

回答

3

一个名为CarpetColor这样的形式创建一个属性:

enum Color { Red, Blue, Green } 
public Color CarpetColor 
{ 
get { return rbGreen.Checked ? Green : (rbRed.Checked ? Red : Blue); } 
set 
    { 
    if (value == Green) 
     rbGreen.Checked = true; 
    else 
     if (value == Red) 
      rbRed.Checked = true; 
     else 
      rbBlue.Checked = true; 
    } 
} 

,然后你可以将CarpetColor属性只是绑定您的表格,数据源的CarpetColor上。

我会做的形式实现INotifyPropertyChanged Interface 和使用单选按钮活动,提高PropertyChanged事件

protected void OnPropertyChanged(string propertyName) 
{ 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

rbGreen.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor"); 
rbRed.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor"); 
rbBlue.CheckedChanged += (s, args) => OnPropertyChanged("CarpetColor"); 
+1

我没有想过使用形式的财产作为绑定过程的一部分。谢谢。 – 2012-07-10 14:42:12

+0

这可以帮助我很多。对于VB.Net,解决方案可以在这里找到:http://stackoverflow.com/questions/16567351/form-property-databinding/16591876#16591876 – Arman 2013-05-16 16:09:22