Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在任务栏中将新的WPF窗口显示为新的应用程序/图标(win10 c#WPF)_C#_Wpf_Windows 10_Taskbar - Fatal编程技术网

如何在任务栏中将新的WPF窗口显示为新的应用程序/图标(win10 c#WPF)

如何在任务栏中将新的WPF窗口显示为新的应用程序/图标(win10 c#WPF),c#,wpf,windows-10,taskbar,C#,Wpf,Windows 10,Taskbar,我试图在我的WPF应用程序中启动一个新窗口,但没有将其与主机应用程序堆叠,我查看了上的帖子,但该帖子似乎是针对windows 7的,我试图使用那里提供的代码,但我有一个错误,即该值不在预期范围内。据我所知,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程ID。是否有任何方法可以使新窗口不堆叠在windows 10的任务栏中 这是我试过的 using Microsoft.WindowsAPICodePack.Taskbar; public void App_Startup(object

我试图在我的WPF应用程序中启动一个新窗口,但没有将其与主机应用程序堆叠,我查看了上的帖子,但该帖子似乎是针对windows 7的,我试图使用那里提供的代码,但我有一个错误,即
该值不在预期范围内。据我所知,该应用程序不会在任务栏中显示为新图标,除非它具有不同的进程ID。是否有任何方法可以使新窗口不堆叠在windows 10的任务栏中

这是我试过的

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

您必须在窗口的
SourceInitialized
事件处理程序中更改应用程序ID,因为新创建的WPF窗口还没有句柄,只有在演示文稿源初始化该窗口时才获取其句柄。在代码中,您试图更改没有任何句柄的窗口的应用程序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");
    }
}