Wpf 当其中一扇窗户放在前面时,如何将所有窗户放在前面?

Wpf 当其中一扇窗户放在前面时,如何将所有窗户放在前面?,wpf,window,activation,Wpf,Window,Activation,我的所有窗口共享相同的基本WindowBase类。 我有 及 它正在工作,但速度非常慢。 但是,我发现当应用程序启动时,“触发”打印了大约100次 我所要做的就是将所有窗口放在前面,同时将我从任务栏单击的窗口堆叠到顶部。 我怎样才能提高 另外,我不会把我的窗户从窗户上抬起来。就在前面。 我可以在Qt中实现这一点,因为有一个叫做stackUnder的函数,它是QWidget(作为一个窗口)好的,我用一个技巧得到了它。 在我刚刚使用的activeAllWindows中

我的所有窗口共享相同的基本WindowBase类。 我有

它正在工作,但速度非常慢。 但是,我发现当应用程序启动时,“触发”打印了大约100次

我所要做的就是将所有窗口放在前面,同时将我从任务栏单击的窗口堆叠到顶部。 我怎样才能提高

另外,我不会把我的窗户从窗户上抬起来。就在前面。 我可以在Qt中实现这一点,因为有一个叫做stackUnder的函数,它是QWidget(作为一个窗口)

好的,我用一个技巧得到了它。 在我刚刚使用的activeAllWindows中

                window.Topmost = true;
                window.Topmost = false;
以防止它产生激活的事件

    void WindowBase_Activated(object sender, EventArgs e)
    {
        if (!_bActivating)
        {
            _bActivating = true;
            activateAllWindows();
            Activate();
            _bActivating = false;
        }
    }
    private void activateAllWindows()
    {
        Console.WriteLine("triggered");
        foreach (Window window in Application.Current.Windows)
        {
            if (window.IsVisible && (window as WindowBase)._bActivating == false && window.WindowState==WindowState.Normal)
            {
                window.Activate();
            }
        }
    }
                window.Topmost = true;
                window.Topmost = false;