Freigeben über


Xamarin Community Toolkit DelegateWeakEventManager

Eine event Delegate Implementierung, die es dem Garbage Collector ermöglicht, ein Objekt zu sammeln, ohne Ereignishandler abbestellen zu müssen.

Inspiriert von Xamarin.Forms. WeakEventManager, erweitert die Funktionalität von Xamarin. Forms. WeakEventManager zur Unterstützung von Delegate Ereignissen.

Syntax

public DelegateWeakEventManager()

Methoden

Methoden Rückgabetyp BESCHREIBUNG
AddEventHandler(Delegate, string eventName) void Fügt den Ereignishandler hinzu.
RemoveEventHandler(Delegate, string eventName) void Entfernt den Ereignishandler.
HandleEvent(object, object, string) void Ruft das Ereignis EventHandler auf.
HandleEvent(string) void Ruft das Ereignis Action auf.
RaiseEvent(object, object, string) void Ruft das Ereignis EventHandler auf.
RaiseEvent(string) void Ruft das Ereignis Action auf.

Beispiele

In diesem Abschnitt wird gezeigt, wie Sie diesen Typ verwenden.

Verwenden von Delegaten

readonly DelegateWeakEventManager _propertyChangedEventManager = new DelegateWeakEventManager();

public event PropertyChangedEventHandler? PropertyChanged
{
    add => _propertyChangedEventManager.AddEventHandler(value);
    remove => _propertyChangedEventManager.RemoveEventHandler(value);
}

void OnPropertyChanged([CallerMemberName]string propertyName = "") => _propertyChangedEventManager.RaiseEvent(this, new PropertyChangedEventArgs(propertyName), nameof(PropertyChanged));

Verwenden von EventHandler

readonly DelegateWeakEventManager _canExecuteChangedEventManager = new DelegateWeakEventManager();

public event EventHandler CanExecuteChanged
{
    add => _canExecuteChangedEventManager.AddEventHandler(value);
    remove => _canExecuteChangedEventManager.RemoveEventHandler(value);
}

void OnCanExecuteChanged() => _canExecuteChangedEventManager.RaiseEvent(this, EventArgs.Empty, nameof(CanExecuteChanged));

Aktion verwenden

readonly DelegateWeakEventManager _weakActionEventManager = new DelegateWeakEventManager();

public event Action ActionEvent
{
    add => _weakActionEventManager.AddEventHandler(value);
    remove => _weakActionEventManager.RemoveEventHandler(value);
}

void OnActionEvent(string message) => _weakActionEventManager.RaiseEvent(message, nameof(ActionEvent));

API