is a connector between
View and provides data and stateto
View that is bound. It is also known as View's Model (VM) because it exposes public properties and commands to a view.
ViewModel takes the responsibility and transforms the data by manipulating
Model or even aggregates many models and exposes them to view. A possible situation is when view will need some property that not exist in any Model; for example, when loading data, the
IsLoading property will be needed that will tell the view that loading is in progress. You may ask why not expose a property that directly says to hide the element? Because
ViewModel is designed to be independent; if we want to handle exposed properties in the view, we have to implement ...