Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用带MVVM的WPF从主窗口打开子窗口时出现问题_C#_.net_Wpf_Mvvm_Icommand - Fatal编程技术网

C# 使用带MVVM的WPF从主窗口打开子窗口时出现问题

C# 使用带MVVM的WPF从主窗口打开子窗口时出现问题,c#,.net,wpf,mvvm,icommand,C#,.net,Wpf,Mvvm,Icommand,我正在用M-V-VM学习WPF。我正在使用ICommand,RelayCommand。 我有几个视图、模型和视图模型。 主窗口视图在应用程序启动时打开。MainWindowView有一个按钮,可通过MainWindowViewModel打开另一个名为“FileListview”的WPF窗口。 FileListView有一个按钮“View Lookup”,它应该通过FileListViewModel打开另一个名为“LookupView”的WPF窗口。但除非在App.xaml.cs中指定FileLi

我正在用M-V-VM学习WPF。我正在使用
ICommand
RelayCommand
。 我有几个视图、模型和视图模型。 主窗口视图在应用程序启动时打开。MainWindowView有一个按钮,可通过MainWindowViewModel打开另一个名为“FileListview”的WPF窗口。 FileListView有一个按钮“View Lookup”,它应该通过FileListViewModel打开另一个名为“LookupView”的WPF窗口。但除非在App.xaml.cs中指定FileListView而不是MainWIndowView,否则我无法使此按钮正常工作。若我让应用程序从“FileListView”开始,我不明白为什么“查看”按钮会起作用。我也不知道我是否需要MainWindowView和FileListView的模型,因为除了一个视图的按钮打开另一个视图外,我什么都没有。 在代码隐藏文件“App.xaml.cs”中

公共部分类应用程序:应用程序
{
启动时受保护的覆盖无效(StartupEventArgs e)
{
基础。启动时(e);
WPFProject.MainWIndowView窗口=新的MainWIndowView();
MainWIndowViewModel VM=新的MainWIndowViewModel();
window.DataContext=VM;
window.Show();
}
}

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

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

重新思考这个问题后,我找到了解决方案。 问题原因:我没有将视图与其ViewModel类关联。 因此,我将以下代码放在FileListView.xaml.cs的代码隐藏中

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

谢谢

1)点击按钮显示打开FileListview的代码;2) 演示如何将ViewModel绑定到LookupView;3) 演示如何将ViewModel绑定到FileListview;我在书中也展示了类似的方法。