Подтвердить что ты не робот

Задайте текст панели задач, отличный от названия окна в wpf

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

В принципе, у вас есть два варианта:

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

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

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

Ответ 3

попытайтесь использовать это: 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 form, когда я сделал окно без заголовка и хочу, чтобы текст был на панели задач. Второй - вам нужно обрабатывать сообщения WIN32 низкого уровня в окне WPF (но это работает только для верхнего уровня).