在 Citrix 中 运行 时,如何防止 WPF+win32 应用程序任务栏图标更改为 Citrix 默认图标?

How to prevent WPF+win32 app taskbar icon from changing to Citrix default icon when run in Citrix?

我有一个包含大量本机代码和 win32 的 WPF 应用程序 windows。 Program's Application's icon 在VS2015工程中定义为..\gui\rc\MyApp.ico。当我在 XenApp Citrix 中启动程序时:

  1. 出现飞溅
  2. WPF 登录 window 在任务栏中显示正确的应用程序图标
  3. 登录后再次出现启动画面,任务栏图标消失
  4. 接下来出现 win32 window,带有任务栏图标。
  5. 加载大量数据时,任务栏图标是 Citrix 图标,但准备好后,正确的应用程序图标会切换回来
  6. 关闭 win32 对话框后,主window 与任务栏中的 Citrix 图标一起出现。

可以跳过 mainwindow 之前的 win32 对话框(步骤 4-5),导致 mainwindow 在启动后使用 Citrix 任务栏图标打开。以上步骤仅是因为对话框加载时任务栏图标是 Citrix。

MyApp.ico 是 160x160 像素,32 位深度。

当在初始化期间创建 mainwindow 时,其 ShowInTaskbar 设置为 false。当它准备好时,它被设置为 true。 这样做是因为我们想在 mainwindow 之前显示其他 window(s),所以未完成的 mainwindow 在外面的某个地方屏幕,我们不希望它可以从任务栏访问。

编辑:如果 ShowInTaskbar 未设置为 false,则不会发生这种情况。

实际上不是这个问题的通用解决方案,但我提出的简单方法似乎用 OP 的代码解决了这个特定问题。

与其设置ShownInTaskbar 属性,不如将主窗体的Visibility 属性初始设置为Visibility.Hidden值。

一旦 window 准备就绪,Visibility 属性 可以设置为 Visibility.Visible 值,从而导致 window 及其任务栏要显示的按钮(带有正确的图标)。