One of the unusual (stubborn) features of MvvmCross is that by default it uses the ViewModel constructor options as part of the navigation mechanism.
This is explained by the example of my answer to Passing variables from ViewModel to another view (MVVMCross)
The basic idea is that when the HomeViewModel requests navigation using:
private void DoSearch() { RequestNavigate<TwitterViewModel>(new { searchTerm = SearchText }); }
this will cause the TwitterViewModel to be built using the searchTerm passed to the constructor:
public TwitterViewModel(string searchTerm) { StartSearch(searchTerm); }
Currently, this means that each ViewModel must have an open constructor that either has no parameters or only string parameters .
Therefore, the reason your ViewModel does not load is because the MvxDefaultViewModelLocator cannot find a suitable constructor for your ViewModel.
For "services", the MvvmCross structure provides a simple ioc container that can be easily obtained using the GetService<IServiceType>() extension methods. For example, in the Twitter example, one of the ViewModel contains:
public class TwitterViewModel : MvxViewModel , IMvxServiceConsumer<ITwitterSearchProvider> { public TwitterViewModel(string searchTerm) { StartSearch(searchTerm); } private ITwitterSearchProvider TwitterSearchProvider { get { return this.GetService<ITwitterSearchProvider>(); } } private void StartSearch(string searchTerm) { if (IsSearching) return; IsSearching = true; TwitterSearchProvider.StartAsyncSearch(searchTerm, Success, Error); }
Similarly, you can see how conference service data is consumed in Conference BaseViewModel
If you prefer to use some other IoC container or some other mechanism for building your ViewModels, you can override the ViewModel construct in MvvmCross.
Take a look at this question (and answers) for ideas on how to do this - How to replace MvxDefaultViewModelLocator in MVVMCross app
eg. if you want, then it will be pretty easy for you to set up the MyViewModelLocator example in this question to build a ViewModel with your service.