2012-07-10 58 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