アプリケーションの場合、プロパティ値の 1 つが変更されたときに反応するカスタム ボタンを使用する必要があります。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