触发特定事件时更改Windows应用程序图标

时间:2015-07-10 04:05:31

标签: c# wpf icons

我只使用现有示例:当我们登录Microsoft Lync时,如果状态集可用,任务栏中应用程序的图标将显示为绿色(默认图标右下角的一个小框)。设置为忙时,图标将变为红色。

我想将这个概念应用到我的应用程序中。到目前为止我所做的是当某个事件被触发时,我将应用程序默认图标更改为所需的图标,如下所示:

myWindow.Icon = BitmapFrame.Create(Application.GetResourceStream(new Uri("/Resources/desiredIcon.png", UriKind.RelativeOrAbsolute)).Stream);

它对我有用。我只想知道除此之外,还有其他更好的方法根据我的情况更改图标。或者到目前为止我做的还不错吗?

1 个答案:

答案 0 :(得分:0)

在您的不完整代码示例中,app是什么?在WPF中,为特定WPF窗口设置图标的正确方法是设置Window.Icon属性。如果您的变量app实际上是对您为其设置图标的Window对象的引用,那么您似乎正在做正确的事情。

如果没有a good, minimal, complete code example清楚地显示您实际在做什么,就无法确定。

请注意,在Windows中,还可以添加" overlay"到窗口的图标。这是一种不同的方法,对某些情况更有用。据我所知,WPF没有提供任何访问此Windows功能的机制,但您可以使用与Windows shell API的COM互操作来实现。此处显示了一些示例代码:Windows 7 Taskbar SetOverlayIcon from WPF app doesn't work