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));