我感到自己似乎缺少了一些非常基本的东西,但是我似乎找不到答案。
当我的应用程序启动时,我希望在 MainWindow.xaml
之外打开一个基于现有 xaml
的第二个 window
。我发现了很多关于使用代码后台创建新 window
的内容,但我想要打开在另一个 xaml
文件中预定义的 window
。
两者都使用 MahApps 并被定义为
<Controls:MetroWindow x:Class=...
...
</Controls:MetroWindow>
第二个窗口称为ControlWindow.xaml,位于根目录下与MainWindow.xaml同级。
谢谢
编辑:
当在app.xaml.cs的App_Startup事件中尝试创建和显示窗口时,即使该窗口从与MainWindow.xaml相同的类继承,也没有Show()方法可用。
MainWindow.xaml.cs
using MahApps.Metro.Controls;
namespace RollCallDisplayDemo
{
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
}
}
ControlWindow.xaml.cs
using MahApps.Metro.Controls;
namespace RollCallDisplayDemo
{
public partial class ControlWindow : MetroWindow
{
public ControlWindow()
{
InitializeComponent();
}
}
}
App.xaml.cs
using System.Windows;
using GalaSoft.MvvmLight.Threading;
namespace RollCallDisplayDemo
{
public partial class App : Application
{
void App_Startup(object sender, StartupEventArgs e)
{
MainWindow NewWindowA = new MainWindow();
ControlWindow NewWindowB = new ControlWindow();
}
static App()
{
DispatcherHelper.Initialize();
}
}
}
NewWindowA会按照您的期望创建并显示一个新实例。NewWindowB仅提供InitializeComponent方法,没有其他从MetroWindow类继承的内容。
new
运算符创建一个新窗口。您的MainWindow
也是通过new
运算符创建的,只是您看不到-框架将其隐藏起来了。 - dymanoid