У меня есть две модели ViewModels и одна содержит другую. Внутренняя имеет Microsoft.Practices.Prism.Commands.DelegateCommand
под названием PrintCommand
. Желательно подписаться на событие CanExecuteChanged
этой команды. Эта часть выполняется, как обычно:Не удается подписаться на DelegateCommand.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
, кажется, не содержат какие-либо живые обработчик, даже если абонент объект все еще существует.
Мне любопытно, почему это происходит?
насчет вашего 'CanExecuteChangedHandler'? Как это выглядит? Это метод или лямбда-выражение? – dymanoid
Простой способ. – dmigo