There is an unsaved comment in progress. You will lose your changes if you continue. Are you sure you want to reopen the work item?
Changeset 60539 breaks DelegateCommand's RaiseCanExecuteChanged() notification
The attached repro solution for Silverlight 4 implements a simple Navigation scheme with two Frame elements that allow navigation through three Page controls each.
Navigation works through Buttons (Back/Forward/Next) whose Commands are bound to DelegateCommand<T> instances that call into the NavigationService's GoForward()/GoBack() methods and CanGoForward/CanGoBack properties.
Page navigation steps lead to an update of the Commands' CanExecute Property via RaiseCanExecuteChanged() in the Page.OnNavigated() methods.
When built against MEFedMVVM.SL build 60280 it is possible to navigate back and forth for as long as you like.
Using MEFedMVVM.SL build 60539 instead leads to the Forward and Back buttons getting permanently disabled (or permanently enabled) after a couple of steps back and forth (at least next/next/next/back/forward/back, behavior is not entirely deterministic).
The reason for this appears to be that the DelegateCommand<T> instances lose the entries in their _canExecuteChangedHandlers collections. As a result the navigation Buttons do not get their CanExecute status pdated by RaiseCanExecuteChanged() calls any