Документация по Avalonia UI
< Все темы
Печать

Уведомления об изменениях

Изменения свойств

Чтобы Avalonia знала, когда свойство в модели представления изменилось, в модели представления должны быть реализованы уведомления об изменениях. Самый простой способ сделать это — использовать ReactiveUI и сделать класс модели представления унаследованным от ReactiveObject.

Затем вы добавляете установщик для каждого свойства, которое вызывает RaiseAndSetIfChanged:

using ReactiveUI;

public class MyViewModel : ReactiveObject
{
    private string caption;

    public string Caption
    {
        get => caption;
        set => this.RaiseAndSetIfChanged(ref caption, value);
    }
}

Для получения дополнительной информации см. документацию ReactiveUI.

Если вам не нужна зависимость от ReactiveUI, вы можете реализовать INotifyPropertyChanged вручную.

Изменения коллекции

Коллекции также должны реализовывать уведомления об изменениях. Есть ряд коллекций, которые делают это за вас из коробки:

  • ObservableCollection доступен в библиотеке базовых классов .NET.
  • DynamicData для более сложных сценариев
  • ReactiveList в ReactiveUI (устарел в пользу DynamicData)
  • AvaloniaList поставляется с Avalonia, но обратите внимание, что его API может измениться в будущем, поэтому на данный момент рекомендуется не использовать его на уровне приложения.

Если вы хотите реализовать уведомления об изменении коллекции самостоятельно, вы можете реализовать INotifyCollectionChanged.

Оглавление