无法解析资源viewmodellocator

时间:2016-01-02 18:25:21

标签: c# wpf mvvm-light

我正在尝试创建一个使用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 个答案:

答案 0 :(得分:1)

应用程序资源字典中的ViewModelLocator实例存储在“定位器”键(x:Key="Locator")下,因此您应该在静态资源引用中使用该键。请注意,完整语法如下:

{StaticResource ResourceKey=Locator}

简而言之

{StaticResource Locator}