5
私は自分のViewModelにイベントを持っています。System.Windows.Interactivity.EventTriggerを使用してViewModelのイベントを参照するのは弱いですか?
public class MyViewModel:ViewModelBase
{
...
public event EventHandler SomethingChanged;
private void FireEvent()
{
if (SomethingChanged != null)
SomethingChanged(this, EventArgs.Empty);
}
...
}
私のビューでは、EventTriggerを使用してイベントをリッスンしてアクションを呼び出しました。
<i:Interaction.Triggers>
<i:EventTrigger EventName="SomethingChanged" SourceObject="{Binding}">
<i:SomeAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
正常に動作します。しかし、メモリリークの可能性があるのであれば私は興味がありますか?私のビューはオンデマンドで作成されるため、コントロールはユーザーに基づいてビジュアルツリーに追加され、削除されます。ソースオブジェクト(ViewModel)は、リスナー(View)よりも寿命が長くなります。したがって、上記のコードを使用すると、引き続き削除されたリスナー(ビュー)への強い参照がイベントにありますか?これは、ソースがNULLに元から設定され、イベントが解除することを意味
this.OnSourceChanged(this.Source, null);
:EventTriggerBaseのOnDetachingで