class Program : Application
{
[STAThread]
public static void Main()
{
Program app = new Program();
app.StartupUri = new Uri("../../LoginWindow.xaml", UriKind.Relative);
//app.MainWindow is null
app.Run();
}
virtual protected void OnStartUp(StartupEventArgs e)
{
MessageBox.Show("Start up");
}
}
//应用程序的MainWindow为null,那么如何在void Main()中将DataContext设置为LoginWindow(是一个UserControl) //由于某种原因,应该没有窗口类,我想直接启动UserControl
答案 0 :(得分:0)
这不是WPF application starts进入的正确方法。我不知道为什么你需要创建一个Main
方法,因为你的应用程序是Windows.Form。无论如何,你可以做你需要看this blog。
基本上你
需要从" 应用程序定义"更改应用程序的构建操作到" Page ",创建一个调用" InitializeComponent "的构造函数,并通过最终调用一个来编写您的Main()应用程序的" 运行"方法重载
然后您的代码将变为
class Program : Application
{
public Program()
{
InitializeComponent();
}
[STAThread]
public static void Main()
{
LoginWindow loginWindow = new LoginWindow();
/* Here you can set loginWindow's DataContext */
Program app = new Program();
app.Run(window);
}
}
答案 1 :(得分:0)
更简单的方法是订阅应用程序的Startup事件:
的App.xaml:
<Application x:Class="MyApp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="App_Startup" />
App.xaml.cs:
public partial class App
{
private void App_Startup(object sender, StartupEventArgs e)
{
var view = new MainView { DataContext = new MainVM() };
view.Show();
}
}