如何在任务栏中将新的 WPF window 显示为新的 app/icon (win10 c#wpf)

How to display a new WPF window as a new app/icon in the taskbar (win10 c#wpf)

我正在尝试在我的 WPF 应用程序中启动一个新的 window,但没有将其与主机应用程序堆叠在一起,我查看了 New taskbar icon when opening a window in WPF 上的 post,但是post 似乎适用于 windows 7,我正在尝试使用那里提供的代码,但出现 The value does not fall within the expected range 错误。据我了解,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程 ID。有什么办法可以让新 window 不在 windows 10 的任务栏中堆叠?

这是我试过的

using Microsoft.WindowsAPICodePack.Taskbar;
public void App_Startup(object sender, StartupEventArgs e)
    {
        TaskbarManager.Instance.SetApplicationIdForSpecificWindow(new WindowInteropHelper(new window2()).Handle, "Gx3OptimisationWindow");
    }

您必须更改 window 的 SourceInitialized 事件处理程序中的应用程序 ID,因为新创建的 WPF window 还没有句柄,只有在表示源初始化 window。在您的代码中,您尝试更改没有任何句柄(它为零)的 window 的应用程序 ID,因此您观察到错误

所以代替:

public void App_Startup(object sender, StartupEventArgs e)
{
    TaskbarManager.Instance.SetApplicationIdForSpecificWindow(new WindowInteropHelper(new window2()).Handle, "Gx3OptimisationWindow");
}

这样做:

class Window2
{
    public Window2()
    {
        InitializeComponent();
        SourceInitialized += (s, e) =>
            TaskbarManager.Instance.SetApplicationIdForSpecificWindow(
                new WindowInteropHelper(this).Handle,
                "Gx3OptimisationWindow");
    }
}