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

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

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

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

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

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

网上有很多例子( 这是我随机挑选的一个例子)。

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

基本上,您有两种选择:

  1. 自己绘制任务栏按钮 ,而不是让Windows处理它。 这实际上相当简单,只要所有者绘制的东西。

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

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

尝试使用这个: 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消息的第二个(但这仅适用于顶级一级)。