0
對於應用程序,我必須使用自定義按鈕,該按鈕在其屬性值之一發生更改時發生反應。我addded一個名爲Data
新按鈕域:將屬性已更改的事件添加到自定義控件
public class ButtonData
{
public string Name;
public string Color;
//And more stuff...
}
然後,我已經爲新的按鈕如下因素代碼,我希望它能夠自我更新(更改背景顏色和一些其他的東西),只要其Data
財產從應用程序的某處獲取更新。我發現有關實施INotifyPropertyChanged
界面的一些想法,我把它在我的自定義按鈕是這樣的:
public partial class ButtonPin : Button, INotifyPropertyChanged
{
private ButtonData _data;
public ButtonData Data
{
get { return _data; }
set
{
if (value == _data) return;
_data = value;
OnPropertyChanged("Data");
}
}
private bool _buttonDataAdded;
public ButtonPin()
{
InitializeComponent();
}
public ButtonPin(ButtonData data)
{
Data = data;
_buttonDataAdded = true;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
現在我不知道怎麼用這個!例如,如果Data
對象中的顏色以某種方式更改爲 ,並將其分配給當前按鈕的數據字段,我希望此按鈕更改其背景顏色。像
var data = new ButtonData();
data.Name = "Hi!";
data.Color = Color.Red;
buttonPin1.Data = data; //Here I need the changes to occur
嗯我想更新發生在'數據'對象已被分配到'按鈕',這將是相同的?! – 2012-07-09 08:16:34
是的,更新()方法在專用字段設置後調用,以顯式更新您的按鈕,因爲有一個新的ButtonData對象。屬性更改事件是在設置ButtonData對象後處理更改。 – Maarten 2012-07-09 08:36:59