2

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

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

4

1 回答 1

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 接口 并使用单选按钮事件来引发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");
于 2012-07-10T13:07:13.547 回答