我已经尝试了几个小时才能达到可以启动WPF应用程序并完全控制的程度.我希望能够创建一个ViewModel,创建一个View(Window),将View的数据上下文设置为ViewModel,然后显示View.
我尝试了很多方法,最有希望的是将App.xaml更改为页面,然后添加我自己的Main方法.不幸的是,这不能正常工作,因为VS2010然后没有在设计器中显示App.xaml的样式,尽管它们在运行应用程序时确实有效.
有办法做我想要的吗?如果没有,人们通常如何在WPF中启动MVVM应用程序,在View本身之外创建一个ViewModel?
Bla*_*asp 26
我会使用Startup事件.您可以将其添加到App.xaml并删除StartupUri行.添加它时,Visual Studio可以在App.xaml.cs文件中为您创建事件.您可以在其中初始化ViewModel和View.
小智 23
这是一个简单的方法......
<Application
x:Class="Demo.Ux.WpfApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
Run Code Online (Sandbox Code Playgroud)
这是基本的App.xaml.cs
public partial class App
{
protected override void OnStartup(StartupEventArgs e)
{
try
{
var mainView = new MainView();
mainView.Show();
mainView.DataContext = new MainViewModel();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Application.MainWindow也可以使用.第一个显示的窗口将自动神奇地分配给MainWindow.当然,您可以跳过创建mainView和直接写入,MainWindow这也会减少语法.
MainWindow = new MainView();
MainWindow.Show();
MainWindow.DataContext = new MainViewModel();
Run Code Online (Sandbox Code Playgroud)
最后一点,我Show在数据绑定之前做的.您需要这样做以避免MainViewModel在创建期间抛出异常的情况.如果MainView尚未显示,应用程序将关闭而不会让您看到错误.