3

如果我在后面的代码中在 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 绑定到事件,这在生命周期管理方面会是一个更清洁的解决方案吗?

4

1 回答 1

2

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

UserControl收集到时,将没有其他对象使您的 eventHandler 保持活动状态。因此,您无需手动实施“生命周期管理”。

于 2012-06-18T12:20:18.110 回答