2 つの ViewModel があり、1 つに別の ViewModel が含まれています。内側のものにはMicrosoft.Practices.Prism.Commands.DelegateCommand
と呼ばれるものがありPrintCommand
ます。CanExecuteChanged
このコマンドのイベントにサブスクライブすることが望ましいです。この部分は通常どおり実装されます。
OneViewModel.PrintCommand.CanExecuteChanged += CanExecuteChangedHandler;
問題は、このサブスクリプションが機能しないことです。逆コンパイルCanExecuteChanged
すると次のようになります。
public event EventHandler CanExecuteChanged
{
add
{
WeakEventHandlerManager.AddWeakReferenceHandler(ref this._canExecuteChangedHandlers, value, 2);
}
remove
{
WeakEventHandlerManager.RemoveWeakReferenceHandler(this._canExecuteChangedHandlers, value);
}
}
デバッグすると、サブスクライバー オブジェクトがまだ存在していても、サブスクリプション後のいくつかの手順の後、_canExecuteChangedHandlers
アクティブなハンドラーが含まれていないようです。
ちょっと気になるのですが、どうしてこうなったのですか?