Как отобразить новое окно WPF как новое приложение / значок на панели задач (win10 c # wpf) - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь запустить новое окно в своем приложении WPF, не укладывая его в стек с хост-приложением, я посмотрел сообщение на Значок новой панели задач при открытии окна в WPF , но это сообщение, кажется, для windows 7, я пытаюсь использовать предоставленный там код, но у меня есть ошибка, говорящая The value does not fall within the expected range. Насколько я понимаю, приложение не будет отображаться в виде нового значка на панели задач, если у него нет другого идентификатора процесса. Можно ли как-нибудь, чтобы новое окно не складывалось на панели задач в windows 10?

Вот что я пробовал

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

1 Ответ

0 голосов
/ 10 марта 2020

Необходимо изменить идентификатор приложения в обработчике события SourceInitialized окна, поскольку вновь созданное окно WPF еще не имеет дескриптора и получает его только тогда, когда источник представления инициализирует это окно. В своем коде вы пытаетесь изменить идентификатор приложения окна, у которого нет дескриптора (он равен нулю), поэтому вы наблюдаете ошибку

Вместо:

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");
    }
}
...