gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:36:27 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com