응용 프로그램의 속성 값 중 하나가 변경 될 때 반응하는 사용자 지정 단추를 사용해야합니다.속성 변경 이벤트를 사용자 지정 컨트롤에 추가
다음public class ButtonData
{
public string Name;
public string Color;
//And more stuff...
}
나는, 나는 될 때마다 Data
건물 자체 (변경 배경 색상과 다른 물건)을 업데이트 할 수있는 새로운 버튼의 folowing 코드 싶지 않은 : 나는 새로운 버튼 Data
라는 이름의 필드를 CH3OH 응용 프로그램의 어딘가에서 업데이트됩니다. 나는 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
흠''Data' 개체가'Button'에 할당 된 후에 업데이트를 원합니다. 동일합니까?! –
새로운 ButtonData 객체가 있으므로 명시 적으로 버튼을 업데이트하려면 private 필드가 설정된 후에 Update() 메서드가 호출됩니다. property changed 이벤트는, ButtonData object의 설정 후에 변경을 처리하는 것입니다. – Maarten