vb.net中的单选按钮和数据绑定

时间:2012-07-10 00:15:35

标签: vb.net winforms data-binding

我有一个具有一些属性的对象,其中一个是CarpetColor。我还在自己的容器中的表单上有三个单选按钮(rbRedrbBluerbGreen)。我想使用数据绑定将对象CarpetColor设置为选中的任何按钮。

我知道如何进行一个简单的绑定,其中一个控件的属性绑定到一个对象属性。我无法弄清楚如何将三个控件的结果绑定到一个属性。例如,如果用户点击“红色”,则CarpetColor的值应为"红色"。同样,如果他选择“绿色”,CarpetColor的值应改为"绿色"。

1 个答案:

答案 0 :(得分: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");