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