我有两个" MainWIndows"。登录屏幕和实际的内容主窗口。这是我想要发生的过程。
用户启动应用程序
点击登录窗口中的登录按钮
初始化内容窗口
等到我的所有列表和数据都被收集,解析并添加到ListViews
关闭登录窗口并显示主窗口。 (将MainWindow设为主窗口)
我遇到了实际隐藏主窗口的问题,但我仍然需要初始化它以便我可以收集所有数据。
我将此添加到我的App.xaml:
<Application.MainWindow>
<NavigationWindow Source="MainWindow.xaml" Visibility="Hidden"></NavigationWindow>
</Application.MainWindow>
这是我的一些LoginWindow代码:
// Login complete, load the MainWindow Data
MainWindow mainWindow = new MainWindow();
mainWindow.setLoginWindow = this;
mainWindow.InitializeComponent(); //mainWindow.Show();
我在MainWindow中使用的代码:
公共部分类MainWindow:MetroWindow {
Window LoginWindow;
public Window setLoginWindow { get { return LoginWindow; } set { LoginWindow = value; } }
public MainWindow()
{
InitializeComponent();
// Hide the window to load Data, then on completion, close LoginWindow and show MainWindow: ::: LoginWindow.Close();
LoadData();
}
public void LoadData()
{
// Add player's to list ....
// Done loading data, show the window
LoginWindow.Close();
this.Visibility = Visibility.Visible;
}
}
问题
我该如何正确地做到这一点?此外,我想将Focus保持在LoginWindow上,直到显示MainWIndow。
答案 0 :(得分:2)
(在我的头顶,所以注意语法错误等...)
编辑App.xaml并执行此操作:
启动= “启动”
然后编辑App.xaml.cs并添加如下的StartUp事件:
private void StartUp(object sender, StartupEventArgs args)
{
...
}
然后在里面你可以调用你的登录窗口,然后在那之后启动你的主窗口。
var login = new LoginWindow();
if(login.ShowDialog()!=true)
{
//login failed go away
return
}
var mainWin = new MainWindow();
mainWin.Show();
答案 1 :(得分:1)
我认为问题在于你将逻辑放在MainWindow中。尝试将其放在static Main()
方法或class App: Application
类中。
这是一个代码项目,他正在为启动画面做类似的事情: http://www.codeproject.com/Articles/38291/Implement-Splash-Screen-with-WPF
以下是使用App.xaml.cs的教程 http://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/