2016-04-13 8 views
0

Ich habe diesen Blogeintrag von Lauren Bugnion über MVVM Light IOC Container studiert und ich bin eine Sache, die mich wirklich verwirrt.MVVM Light IOC Container Beispiel

Hier ist ein Link zu dem Blog veröffentlichen MVVM light IOC containers blog

Ich möchte nicht zitieren die ganze Sache so bin ich nur das Snippet gehen aufzunehmen, dass ich eine harte Zeit Verständnis.

public class ViewModelLocator 
{ 
    static ViewModelLocator() 
    { 
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 
    if (ViewModelBase.IsInDesignModeStatic) 
    { 
     SimpleIoc.Default.Register<IRssService, Design.DesignRssService>(); 
    } 
    else 
    { 
     SimpleIoc.Default.Register<IRssService, RssService>(); 
    } 
    SimpleIoc.Default.Register<INavigationService, NavigationService>(); 
    SimpleIoc.Default.Register<MainViewModel>(); 
    } 
    public MainViewModel Main 
    { 
    get 
    { 
     return ServiceLocator.Current.GetInstance<MainViewModel>(); 
    } 
    } 
} 

Jetzt verstehe ich den statischen Konstruktor und alles, aber ich kann meinen Kopf um die nicht wickeln

public MainViewModel Main 
    { 
    get 
    { 
     return ServiceLocator.Current.GetInstance<MainViewModel>(); 
    } 
    } 

Ist diese Funktion zugänglich, auch? und wie?

Danke! :)

Antwort

0

Ja, es ist zugänglich, wenn Sie eine Instanz von ViewModelLocator haben. Sie können beispielsweise eine Instanz in App.xaml instanziieren, auf die über StaticResource zugegriffen werden kann.

+0

Können Sie ein Beispiel geben? Weil in meinem App.cs es mir nicht erlaubt, 'öffentlichen statischen ViewModelLocator Locator' zu schreiben –

+0

Wow, ich bin dumm, eine öffentliche Infront der Klasse zu vermissen machte mich super verwirrt, was das eigentliche Problem war. Danke –

+0

Sie können es zu XAML hinzufügen, indem Sie etwas wie schreiben –

Verwandte Themen