我正在使用M-V-VM学习WPF。我正在使用ICommand
,RelayCommand
。
我有几个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向我指出好的文章或示例代码,我将不胜感激。
答案 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;
}
}
谢谢