我觉得我在这里缺少一些非常基本的东西,但我似乎无法找到答案。
当我的应用启动时,除了window
之外,我希望基于现有xaml
的第二个MainWindow.xaml
打开。我发现了很多关于使用代码隐藏创建新window
的内容,但我想打开另一个window
文件中预定义的xaml
。
两者都在使用MahApps并被定义为
<Controls:MetroWindow x:Class=...
...
</Controls:MetroWindow>
第二个window
名为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类。
答案 0 :(得分:2)
您需要调用NewWindowB.Show()才能使其可见。此外,没有必要覆盖主窗口的创建方式,只需执行以下操作:
public partial class App : Application
{
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
ControlWindow NewWindowB = new ControlWindow();
NewWindowB.Show();
}
}