如果我在代码隐藏中的用户控件上注册事件。 例如:
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
时,将没有其他对象使事件处理程序保持活动状态。因此,您无需手动实施"生命周期管理"。