何时发布UserControl事件处理程序?

时间:2012-06-18 12:14:12

标签: wpf events user-controls dispose

如果我在后面的代码中注册UserControl上的事件。 E.g:

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 个答案:

答案 0 :(得分:2)

Event以及EventHandler的来源是本地的。因此,在收集UserControl时,将收集它们。

当收集UserControl时,将没有其他对象使您的eventHandler保持活动状态。因此,您无需手动实施终身管理'