gpt4 book ai didi

c# - 如何在 WPF 中启动时打开两个窗口?

转载 作者:行者123 更新时间:2023-11-30 21:40:47 24 4
gpt4 key购买 nike

我觉得我在这里遗漏了一些非常基本的东西,但我似乎找不到答案。

当我的应用程序启动时,除了 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() 方法。

主窗口.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 类继承的方法。

最佳答案

您需要调用 NewWindowB.Show() 使其可见。此外,无需覆盖主窗口的创建方式,只需执行以下操作即可:

public partial class App : Application
{
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);

ControlWindow NewWindowB = new ControlWindow();
NewWindowB.Show();
}
}

关于c# - 如何在 WPF 中启动时打开两个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44265907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com