wpf - 在 xaml 中将 View 绑定(bind)到 ViewModel 会引发错误 "Cannot create an instance of"

标签 wpf mvvm

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

描述:
构建一个 MVVM 示例 WPF 应用程序,该应用程序从 SQL 表中读取数据并将它们显示在 View 中。 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-->
class PeopleViewModel
{
    PeopleRepository _Repository;

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

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

PeopleRepository--> 模型类使用 Entity Framework 从数据库中获取所有行。
class PeopleRepository 
{
    MyEntities _Context;

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

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

}

MyEntities 使用 Entity Framework 模型创建。

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

在 Vstudio 设计模式下, View 用户控件抛出错误:ArgumentException was throw on "PeopleViewModel": Cannot create an instance of "PeopleViewModel"。

错误显示在行
    <vm:PeopleViewModel/>

任何帮助表示赞赏。谢谢

最佳答案

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

像:

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

关于wpf - 在 xaml 中将 View 绑定(bind)到 ViewModel 会引发错误 "Cannot create an instance of",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8045511/

相关文章:

c# - MVVM 批准的方法来禁用文本框中的某些字符?

wpf - WPF与PRISM 4.0和Unity的工作示例

c# - Xamarin Forms 两种方式绑定(bind)ActivityIndi​​cator

xaml - 从 ViewModel 中选择 ItemTemplate

c# - 如何为 dataTemplate 中的文本 block 动态设置工具提示?

c# - 无法序列化和反序列化UserControl

c# - 使用 Random() 和颜色解释有趣的现象

wpf - 如何知道为什么动画会口吃?

c# - 带有外壳屏幕导体的自定义 caliburn.micro 闪屏

wpf - 在 WPF 中设置具有 2 个级别的 TreeView HierarchicalDataTemplate