Programatic re-evalutation of MVVM command's "can execute" state

Posted by dzs on Stack Overflow See other posts from Stack Overflow or by dzs
Published on 2010-06-06T15:40:08Z Indexed on 2010/06/06 15:42 UTC
Read the original article Hit count: 364

Filed under:
|
|
|

Hello!

I'm writing a WPF application using the MVVM pattern, based on the following article: WPF Apps With The Model-View-ViewModel Design Pattern

I have two buttons on my View with the buttons' "Command" property bound (with data binding) to a given instance of the RelayCommand class (see "Figure 3 The RelayCommand Class" from the article above). The RelayCommand class has support for checking whether the given command can be executed.

WPF automatically disables buttons whose command cannot be executed.

Each of my commands (in the ViewModel class) start a background operation, and the command cannot be executed again until the background operation is finished. The RelayCommand instances have information whether the background operation is still working or it is finished.

My problem is the following: after pressing the any of the buttons, the buttons automaticaly go disabled (which is OK) because the background operation started and the command cannot be executed until it is finished, but after the operation had finished, the buttons don't go enabled automatically because their command's "can be executed" predicate is not automatically reevaluated. The reevaluation can be manually triggered by having the application loose and regain focus (by pressing ALT+TAB). After doing this trick, the buttons get enabled once again.

How can I programatically reevaluate the buttons' command's "can execute" state?

© Stack Overflow or respective owner

Related posts about wpf

Related posts about mvvm