无法创建“MainViewModel”的实例

我正在创建一个简单的WPF应用程序,用于使用Observable集合(遵循MVVM模式)实现数据绑定到数据库的数据绑定。

App.xaml.cs类

public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var mainWindow = new MainWindow(); var viewModel = new MainViewModel(); mainWindow.Show(); } } 

当我尝试将它绑定到我的XAML时,我引发了以下错误:

无法创建“MainViewModel”的实例

XAML代码:

       

如何克服这个错误? 谢谢。

PS:我在MSDN论坛上发布了相同的问题,但是我的整个代码,请寻求更好的理解。

根据用户的建议,我是否必须以这种方式保留我的OnStartup()?

  public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); } } 

尝试在MainWindow的构造函数上进行绑定,并将其从XAML中删除:

 public MainWindow() { InitializeComponent(); DataContext = new MainViewModel(); } 

这应该工作..

您正在混合使用两种不同的方法来设置DataContext。 选择一个并继续。

如果你的viewmodels有默认的构造函数(即没有参数的构造函数),你可以在xaml中完成所有操作:

      

或者你将Window.DataContext保留在视图中,并在其他地方单独执行,也许在之前的OnStartup()中。

 public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var mainWindow = new MainWindow(); var viewModel = new MainViewModel(); mainWindow.DataContext = viewModel; // Bind the ViewModel to the Window Datacontext. mainWindow.Show(); } }