Когда выпускать обработчики событий UserControl?


Если я регистрирую события на UserControl в коде позади. Например:

public partial class PositionView : UserControl
{
    // If required ViewModel can be accessed using DataContext 
    public PositionViewModel ViewModel 
    {
        get { return (PositionViewModel) this.DataContext; }
    }

    public PositionView()
    {
        InitializeComponent();

        this.DataContextChanged += new System.Windows.DependencyPropertyChangedEventHandler(PositionView_DataContextChanged);
    }

    void PositionView_DataContextChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
    {
        this.ViewModel.UpdateTotalsChanged.Subscribe(_ => this.PositionGridControl.UpdateTotalSummary());
    }       
}

Когда я должен избавиться от обработчика событий? Там нет IDisposable, чтобы зацепиться?

Если я свяжусь с событием через xaml, будет ли это более чистым решением с точки зрения управления временем жизни?

1 3

1 ответ:

Источник Event, а также EventHandler являются локальными. Поэтому они будут собраны, когда соберется само UserControl.

Когда UserControl будет собран, не будет никакого другого объекта, который поддерживает жизнь вашего eventHandler. Поэтому вам не нужно вручную реализовывать "управление временем жизни".