ServiceLocationProvider doit être défini

Je suis en utilisant MVVM Light. Quand j'ai ajouter de la valeur convertisseurs dans mes ressources, mon application se bloque à l'exception:

Une exception de type 'System.InvalidOperationException' s'est produite dans Microsoft.Practices.ServiceLocation.DLL mais n'a pas été traitée dans le code utilisateur

Informations supplémentaires: ServiceLocationProvider doit être définie.

Dans le App.xaml.cs OnLaunched événement, j'ai cette ligne

ServiceLocator.Current.GetInstance<MyViewModel>();

Il se bloque là..
Dans ce ServiceLocator je peux voir il y a un SetLocatorProvider méthode qui prend en argument ServiceLocatorProvider. Je ne pourrais pas trouver quelque chose dans le Web et Microsoft MSDN page est datée:

protected override async void OnLaunched(LaunchActivatedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;

        if (rootFrame == null)
        {
            ...
        }

        if (rootFrame.Content == null)
        {
            ...
        }

        Window.Current.Activate();

        DispatcherHelper.Initialize();

        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        ServiceLocator.Current.GetInstance<MyViewModel>();
    }

EDIT: Voici le le plein OnLaunched événement.
Après la mise

ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

une exception est:

Une exception de type Microsoft.Les pratiques.ServiceLocation.ActivationException' s'est produite dans GalaSoft.MvvmLight.Extras.DLL mais n'a pas été traitée dans le code utilisateur

Des renseignements supplémentaires: Type introuvable dans le cache: cMC.ViewModel.MyViewModel.

C'est le code de ViewModelLocator

public class ViewModelLocator
{
    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        SimpleIoc.Default.Register<MyViewModel>();
    }

    public MyViewModel MyVM
    {
        get
        {
            return ServiceLocator.Current.GetInstance<MyViewModel>();
        }
    }

    public static void Cleanup() {}
}
  • Depuis le ServiceLocator est une sorte de Wrapper pour la mise à disposition du Cio Conteneurs comme l'unité ou de la mef ... Il vous demande de configurer le fournisseur en invoquant la méthode ServiceLocator.SetLocatorProvider(() => nouvelle UnityServiceLocatorAdapter(conteneur));
InformationsquelleAutor v.g. | 2015-01-20