Установить текст панели задач, отличный от заголовка окна в wpf - PullRequest
11 голосов
/ 07 января 2011

Я разрабатываю с VS2010 в C #, и я хотел бы создать окно WPF, текст панели задач которого отличается от заголовка окна. Свойство Title устанавливает заголовок окна и текст панели задач. Есть ли способ установить их отдельно?

Ответы [ 3 ]

7 голосов
/ 07 января 2011

Во-первых, позвольте мне подтвердить то, что сказал Коди Грей в своем ответе и комментарии - это нестандартное поведение, и у вас должна быть чертовски веская причина для этого.

При этом я бы предпочел почти противоположный подход к точке № 1 Коди. Я хотел бы создать окно WindowStyle со значением None и воссоздать строку заголовка (которая может включать значок, ваше «псевдо-заголовок», кнопки свертывания, разворачивания и закрытия и, возможно, даже стандартное меню Windows. Вам также потребуется обрабатывать изменение размера (что можно сделать, установив ResizeMode в CanResizeWithGrip, но он добавляет элемент управления Grip в нижней части окна, что делает его немного отличным от «обычного» окна).

Свойство Title этого окна будет тогда заголовком, который вы хотите отобразить на панели задач, а "псевдо-заголовок" в строке заголовка, который вы создадите, будет просто Label или TextBlock, привязанным к тому, что вы хотите, чтобы ваше окно показать.

Это немного сложно, но на самом деле не так уж сложно сделать. По пути вы, вероятно, столкнетесь с некоторыми проблемами (например, как выглядит окно в разных ОС или с разными темами Windows). Приятно то, что он не требует взаимодействия, и большинство из них может быть достигнуто только с использованием XAML.

В сети много примеров ( вот один , который я выбрал наугад).

Опять же, вам придется решить, стоит ли это усилий для создания нестандартного поведения. YMMV.

4 голосов
/ 07 января 2011

В основном, у вас есть два варианта:

  1. Нарисуйте кнопку панели задач самостоятельно , а не позволяйте Windows обрабатывать ее. Это на самом деле достаточно просто, насколько владелец рисует вещи.

  2. Управление двумя разными формами / окнами одновременно. Вам нужно будет создать скрытое главное окно, которое будет отображаться на панели задач и иметь ваше второе окно. Ваше второе окно будет отображаться, отображать собственную подпись в строке заголовка и содержать ваш фактический пользовательский интерфейс, но не будет отображаться на панели задач (установите для свойства ShowInTaskbar значение «False»). Вам нужно будет написать код для отображения второго окна всякий раз, когда первое активируется с помощью панели задач.

Я рекомендую перед тем, как приступить к какому-либо из этих путей, тщательно продумать, действительно ли вам нужна эта «функциональность». Трудно сказать, что происходит с тем, что если у вас есть одно окно с разными именами в разных местах.

1 голос
/ 03 марта 2011

попробуйте использовать это: http://www.codeguru.com/forum/showthread.php?t=3833 в сочетании с http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6b97a6de-0480-4339-8ed0-cb7cdb27bd83

Первый из них отлично работает для меня в классическом приложении .NET, когда я создал окно без строки заголовка и хочу добавить текст на значок панели задач. Второй - вам нужно обрабатывать низкоуровневые сообщения WIN32 в окне WPF (но это работает только для верхнего уровня).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...