将视图绑定到xaml中的ViewModel会引发错误“无法创建实例”

时间:2011-11-08 03:12:51

标签: wpf mvvm

我是MVVM模型的新手,所以我想要一些建议。

描述: 构建MVVM示例WPF应用程序,该应用程序从SQL表中读取数据并在视图中显示它们。 View使用WPFToolkit:grid来显示结果。应用程序运行正常,能够在网格中显示结果。该应用程序是使用VS2010开发的。

PeopleListView - >显示结果

<UserControl.DataContext>
    <vm:PeopleViewModel/>
</UserControl.DataContext>
<WpfToolkit:DataGrid ItemsSource="{Binding Path=GetAllItems}"  AutoGenerateColumns="False" 
    Name="WpfGrid" Margin="0,0,28,0" Width="301">
    <WpfToolkit:DataGrid.Columns>
        <WpfToolkit:DataGridTextColumn Header="Identifier" Width="Auto" Binding="{Binding Path=Id}"/>
        <WpfToolkit:DataGridTextColumn Header="Description" Width="Auto" Binding="{Binding Path=Name}"/>
        <WpfToolkit:DataGridTextColumn Header="Create Date" Width="Auto" Binding="{Binding Path=CreateDate}"/>
    </WpfToolkit:DataGrid.Columns>
</WpfToolkit:DataGrid>

PeopleViewModel - &GT;

class PeopleViewModel
{
    PeopleRepository _Repository;

    public PeopleViewModel()
    {
        _Repository = new PeopleRepository();
    }

        public IEnumerable<Person> GetAllItems
        {
            get { return _Repository.GetAllItems(); }
        }
}

PeopleRepository - &GT; Model类使用Entity Framework从DB获取所有行。

class PeopleRepository 
{
    MyEntities _Context;

    public PeopleRepository()
    {
        _Context = new MyEntities();
    }

    public IEnumerable<Person> GetAllItems()
    {
        return _Context.People;
    }

}

使用实体框架模型创建的MyEntities。

App.Config具有由Entity Framework模型创建的连接字符串。

在Vstudio设计模式下,视图用户控件抛出错误:“PeopleViewModel”上抛出了ArgumentException:无法创建“PeopleViewModel”的实例。

错误显示在

    <vm:PeopleViewModel/>

任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:6)

假设您的代码在运行时正常运行。您可以指示编译器在InDesignMode时忽略某些“资源”特定操作,这将逃避您获得的异常。

像:

if(! DesignerProperties.GetIsInDesignMode(new DependencyObject()) {
   //Use resources
}