2016-01-02 3 views
0

Im пытается создать проект, который использует mvvmlight. У меня есть моймоделокатор.ресурс viewmodellocator не может быть разрешен

namespace WPFService.ViewModel 
{ 
    public class ViewModelLocator 
    { 
     public ViewModelLocator() 
     { 
      ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 
      SimpleIoc.Default.Register<MainViewModel>(); 
     } 

     public MainViewModel MainView 
     { 

      get 
      { 
       return new MainViewModel(new DummyQuestionRepository()); 
      } 
     } 

     public static void Cleanup() 
     { 
      // TODO Clear the ViewModels 
     } 
    } 
} 

В моей App.xaml у меня есть:

<Application x:Class="WPFService.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:WPFService.ViewModel" /> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

WPFService мое пространство имен

В моей MainWindow.xaml я хочу связываться с MainViewModel (от MainView) со следующим кодом :

<Window x:Class="WPFService.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="500" Width="900" 
    DataContext="{Binding MainView, Source={StaticResource ViewModelLocator}}"> 

Однако я получаю ошибку

viewmodellocator ресурс не может быть решен

Что случилось с моим кодом?

ответ

1

Ваш ViewModelLocator экземпляр в словаре ресурсов приложений хранится под ключом «Locator» (x:Key="Locator"), поэтому вы должны использовать этот ключ в своей ссылке на статический ресурс. Обратите внимание, что полный синтаксис выглядит следующим образом:

{StaticResource ResourceKey=Locator} 

и в короткие

{StaticResource Locator} 
Смежные вопросы