如何在另一个 window 之后打开 window

How do I open window inside another window after

我有一个 mainwindown,我想打开一个位于它上面的 window。但似乎我想要的 window 在 mainwindow 打开之前就打开了。 为了解决这个问题,我需要在 mainwindow?

的初始化组件之后打开 window
public partial class MainWindow : Window
{      
    public MainWindow ()
    {
        InitializeComponent();

        OpenProjectsView();
    }

    private void OpenProjectsView()
    {
        ProjectsView projectWindow= new ProjectsView();
        projectWindow.Owner = this;
        projectWindow.ShowDialog();
    }
}

在 Form.Activated 事件中调用 OpenProjectsView( )。

private void MainWindow_Activated(object sender, System.EventArgs e)
{ 
    OpenProjectsView();
}

试试这个。它会在您的主要 window 呈现后启动您的 window。

public MainWindow()
{
    InitializeComponent();
    this.ContentRendered+= Window_ContentRendered;
}

private void Window_ContentRendered(object sender, RoutedEventArgs e)
{
    OpenProjectsView();
}
public partial class MainWindow : Window
{      
    public MainWindow ()
    {
        InitializeComponent();

        OpenProjectsView();
    }

    private void OpenProjectsView()
    {
        ProjectsView projectWindow= new ProjectsView();
        projectWindow.Owner = this;
        projectWindow.TopMost = true;
        projectWindow.Show();
    }
}

这将使第二个 window 位于第一个之上,但是因为您在父 window 构造函数中创建并显示它,所以它将始终出现(实例化)在您的父之前window.

此方法允许这种情况发生,同时您仍然可以与两者互动 windows(Show() 而不是 ShowDialog())。


正如其他人所提到的,您可以在一个事件中实例化您的 window,而不是在构造函数中实例化,但这完全取决于您的需要……您的问题有点模棱两可! :O)

试试这个代码

projectWindow.IsMdiContainer = True; 
projectWindow.MdiParent = this;
projectWindow.Show();