2011-08-15 47 views
0

我正在学习带有M-V-VM的WPF。我正在使用ICommand,RelayCommand。 我有几个视图,模型和ViewModels。在应用程序启动时打开MainWIndowView。 MainWindowView有一个按钮,通过MainWindowViewModel打开另一个名为“FileListview”的WPF窗口。 FileListView有一个“View Lookup”按钮,它应该通过FileListViewModel打开另一个名为“LookupView”的WPF窗口。但是我不能让这个按钮工作,除非我在App.xaml.cs中指定FileListView而不是MainWIndowView。我无法理解为什么“查看查找”按钮的工作,如果我从“FileListView”开始申请。我也不明白我是否需要为MainWindowView和FileListView建模,因为除了一个视图的按钮打开另一个视图之外,我什么也没有。 在隐藏文件代码“App.xaml.cs”我有使用MVVM与MVVM从主窗口打开子窗口的问题

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(); 
    } 
} 

我将不胜感激,如果有人可以点我使用WPF与M-V-VM反映我问题的好文章或示例代码。

+2

1)显示代码开放FileListview通过点击一个按钮; 2)显示如何将ViewModel绑定到LookupView; 3)显示如何将ViewModel绑定到FileListview; – sll

回答

0

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

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

谢谢

1

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

+0

我在书中演示了类似的方法。 –