对于应用程序,我必须使用一个自定义按钮,该按钮在更改其属性值之一时做出反应。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