使用带MVVM的WPF从主窗口打开子窗口的问题

时间:2011-08-15 18:49:09

标签: c# .net wpf mvvm icommand

我正在使用M-V-VM学习WPF。我正在使用ICommandRelayCommand。 我有几个Views,Models和ViewModels。 应用程序启动时打开MainWIndowView。 MainWindowView有一个按钮,可以通过MainWindowViewModel打开另一个名为“FileListview”的WPF窗口。 FileListView有一个“View Lookup”按钮,该按钮应该通过FileListViewModel打开另一个名为“LookupView”的WPF窗口。但除非我在App.xaml.cs而不是MainWIndowView中指定FileListView,否则无法使此按钮生效。如果我从“FileListView”开始创建应用程序,我无法理解为什么“View Lookup”按钮有效。我也不明白我是否需要MainWindowView和FileListView的模型,因为除了一个视图的按钮打开另一个视图之外我什么都没有。 在文件“App.xaml.cs”后面的代码我有

public partial class App : Application
{
  protected override void OnStartup(StartupEventArgs e)
    {
      base.OnStartup(e);
      WPFProject. MainWIndowView window = new MainWIndowView ();
      MainWIndowViewModel  VM = new MainWIndowViewModel ();
      window.DataContext = VM;
      window.Show();
    }
 }

如果有人能够使用反映我的问题的M-V-VM的WPF向我指出好的文章或示例代码,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

Here是我使用mvvm和wpf的对话框/子窗口的方法。请注意sllev的评论并发布所有相关代码。

答案 1 :(得分:0)

重新思考问题后,我能够找到解决方案。 问题的原因:我没有将View与其ViewModel类关联。 所以我将以下代码放在FileListView.xaml.cs的代码中。

public partial class FileListView: Window
{
  private FileListViewModel  _ fileListViewModel = new FileListViewModel ();
  public FileListViewModel () 
  {
    InitializeComponent();
    base.DataContext = _fileListViewModel; 
  }
}

谢谢