2011-08-15 81 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

我在書中演示了類似的方法。 –