我有一个具有一些属性的对象,其中一个是CarpetColor
。我还在自己的容器中的表单上有三个单选按钮(rbRed
,rbBlue
,rbGreen
)。我想使用数据绑定将对象CarpetColor
设置为选中的任何按钮。
我知道如何进行一个简单的绑定,其中一个控件的属性绑定到一个对象属性。我无法弄清楚如何将三个控件的结果绑定到一个属性。例如,如果用户点击“红色”,则CarpetColor
的值应为"红色"。同样,如果他选择“绿色”,CarpetColor
的值应改为"绿色"。
答案 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");