Вы не говорите им обновить пользовательский интерфейс, вы вызываете событие, которое указывает, что что-то изменилось, что может быть интересным - вы затем заставляете пользовательский интерфейс подписаться на это событие в ваших экземплярах и соответственно обновляете пользовательский интерфейс.
Итак, допустим, вы хотите вызвать событие всякий раз, когда изменяется какое-либо из свойств класса (удобно, если есть интерфейс INotifyPropertyChanged
, который даже описывает, что вы собираетесь это сделать, и многое будет происходить » заметить "и" поступай правильно ", например BindingList<T>
)
Итак, вы заявляете, что у вашего класса есть свойства:
public event PropertyChangedEventHandler PropertyChanged;
Затем, чтобы поднять событие, вы просто звоните:
if (PropertyChanged != null)
{
PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName);
PropertyChanged(this, e);
}
Чтобы подписаться на события (в вашем клиентском приложении / на уровне пользовательского интерфейса), это так же просто, как иметь ваш хедлер событий:
protected void yourClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// Update the UI -- might need to check whether you need too invoke, if you're multi-threaded
}
Добавить проводку
YourClass foo = new YourClass();
foo.PropertyChanged += new PropertyChangedEventHandler(this.yourClass_PropertyChanged);