Когда выпускать обработчики событий 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 ответ:
Источник
Event
, а такжеEventHandler
являются локальными. Поэтому они будут собраны, когда соберется самоUserControl
.Когда
UserControl
будет собран, не будет никакого другого объекта, который поддерживает жизнь вашего eventHandler. Поэтому вам не нужно вручную реализовывать "управление временем жизни".