如何在WPF应用程序中实现MainViewModel ?



我需要帮助理解MainViewModel在WPF应用程序中的实现。

例如,假设我有一个名为Tools的窗口,它由几个ViewModels组成。我如何将该窗口的DataContext设置为代表所有ViewModelsMainViewModel?是否一个元素的DataContext,比如ListBox,将被绑定到MainViewModel中相应的ViewModel属性?

这里有几个选项:

  1. App类中重写OnStartup方法,在那里你将创建一个窗口实例并在那里设置DataContext
protected override OnStartup(/*Some args here*/)
{
base.OnStartUp(/*Some args here*/);
var mainWindowViewModel = new MainWindowViewModel();
var mainWindow = new MainWindow
{
DataContext = mainWindowViewModel
};
MainWindow = mainWindow;
MainWindow.Show();
}

不要忘记删除App.xaml文件中的StartupUri属性,并在那里设置ShutdownMode=OnMainWindowClose

  1. 在窗口构造器中创建MainWindowViewModel实例
public class MainWindow : Window
{
public MainWindow()
{
DataContext = new MainWindowViewModel()
}
}

综上所述——在我看来,第一种方法更好,因为您可以在App类中解决所有视图模型依赖关系,并将该逻辑与视图模型本身分离。

一个元素的DataContext,比如说一个ListBox,要绑定到MainViewModel中相应的ViewModel属性吗?

是的。

相关内容

  • 没有找到相关文章

最新更新