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

のソースとEventEventHandlerローカルです。したがって、それらは、UserControlそれ自体が収集されるときに収集されます。

UserControl収集されると、eventHandler を存続させている他のオブジェクトはなくなります。したがって、「ライフタイム管理」を手動で実装する必要はありません。

于 2012-06-18T12:20:18.110 に答える