I am looking for advice on handling states in a WPF MVVM environment.As an example, assume we haveA TreeView (or some other ItemsControl) with some items anda button that is enabled when an item is selected.My ViewModel contains a property SelectedItem that is bound to the SelectedItem of the TreeView.When the Button is clicked, we change to special state: the current SelectedItem is stored somewhere for later reference (let's call the storing variable FirstSelectedItem). Then the Selection is cleared, the Button is disabled and the user is supposed to select an item again (can be any item, even the same one). So we get some entry in SelectedItem. Then the data of the item stored in FirstSelectedItem is changed depending on SelectedItem (change some internal properties that are not visible in the view). After this is done, SelectedItem is restored to contain FirstSelectedItem, the Button is enabled and the view is in normal state again.I would like to know how you approach such problems in WPF. For me it is important to use the MVVM pattern and use codebehind only to redirect stuff to the ViewModel, and that it is possible to give every UI element a different look and behaviour depending on the current state. In a more complicated example, it might be that some controls become disabled or show up or execute another command than usual when a certain state is current.For the looks, I think a way would be to have some property State in the ViewModel. The UI elements can then somehow make their looks dependent on that state (although I don't know how, but I'm sure it's possible).For the behaviour, I have no idea. As far as I know, a Button can bind to one Command, and only one. Or can the binding be changed depending on State?
State handling in WPF-MVVM
wpf;mvvm;state