设置与wpf中的Window标题不同的任务栏文本

时间:2011-01-07 16:31:26

标签: c# wpf winapi

我使用C#中的VS2010开发,我想创建一个WPF窗口,其任务栏文本与Window标题不同。 属性Title设置窗口标题和任务栏文本。有没有办法将它们分开设置?

3 个答案:

答案 0 :(得分:7)

首先,让我强化Cody Gray在回答和评论中所说的内容 - 这是非标准的行为,你应该有一个很好的理由这样做。

话虽这么说,我会采取与Cody的第一点相反的方法。我将创建一个窗口WindowStyle设置为None,并重新创建标题栏(可能包括图标,您的“伪标题”,最小化,最大化和关闭按钮,甚至可能是标准的Windows菜单。您还需要处理大小调整(可以通过将ResizeMode设置为CanResizeWithGrip来完成,但它会在窗口底部添加一个Grip控件,这使得它看起来与“普通”窗口略有不同)。

此窗口的Title属性将是您要在任务栏中显示的标题,并且您创建的标题栏中的“伪标题”将只是一个Label或TextBlock,绑定到您希望窗口的任何内容秀。

这有点复杂,但实际上并不难做到。您可能会遇到一些陷阱(例如,Window在不同操作系统上的显示方式或应用了不同的Windows主题)。好处是它不需要Interop,并且大部分只能使用XAML来实现。

网上有很多例子(here is one我是随机挑选的。)

同样,您必须决定是否值得创建非标准行为。 YMMV。

答案 1 :(得分:4)

基本上,您有两种选择:

  1. Draw the taskbar button yourself,而不是让Windows处理它。这实际上相当简单,只要所有者绘制的东西。

  2. 同时管理两个不同的表单/窗口。您需要创建一个隐藏的主窗口,该窗口将显示在任务栏上并拥有您的第二个窗口。您的第二个窗口将可见,在其标题栏上显示自己的标题,并包含您的实际用户界面,但不会显示在任务栏上(将其ShowInTaskbar属性设置为“False”)。每当使用任务栏激活第一个窗口时,您都必须编写代码来显示第二个窗口。

  3. 我建议在开始使用其中一个路径之前,仔细考虑是否真的需要这个“功能”。如果你在不同的地方拥有一个名字不同的窗口,那么很难说清楚会是什么。

答案 2 :(得分:1)

尝试使用此: 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表单应用程序中工作正常。 你需要在WPF窗口中处理低级别WIN32消息的第二个(但这只适用于顶级一级)。