何时释放用户控件事件处理程序



如果我在代码隐藏中的用户控件上注册事件。 例如:

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

何时应释放事件处理程序?没有可挂的 ID吗?

如果我通过 xaml 绑定到事件,这在生存期管理方面会是一个更干净的解决方案吗?

Event的来源以及

EventHandler都是本地的。因此,当收集UserControl本身时,它们将被收集。

收集UserControl时,将没有其他对象使事件处理程序保持活动状态。因此,您无需手动实施"生命周期管理"。

最新更新