Я разрабатываю VS2010 в С#, и я хотел бы создать окно WPF, у которого есть текст панели задач, отличный от названия окна. Заголовок свойства задает как заголовок окна, так и текст панели задач. Есть ли способ установить их отдельно?
Задайте текст панели задач, отличный от названия окна в wpf
Ответ 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 (но это работает только для верхнего уровня).