将未聚焦 window 设置为灰度 - WPF C#

Set unfocused window to grayscale - WPF C#

我有一个色彩缤纷的应用程序,我想在它未聚焦时以灰度显示。

这是应用程序在获得焦点时的样子:

--哈!添加图片需要10声望。


无论如何,由于 mahapps(地铁),顶部栏已经变成灰色,但是当 window 未聚焦时,内容仍然是彩色的。有没有办法在内容上放置某种层? 在搜索这个主题时,我只被关于如何将图像转换为灰度的问题淹没。

我的申请中有TabControlsLabelsButtonsWebBrowsersTextBlocks等等,所有的内容都是包含在 grid 中,如果有帮助的话。


非常感谢对此的任何想法。

这可以使用 PixelShaders 创建 WPF 效果来完成。解释这一切将是一个很长的答案。

有关如何创建和使用灰度像素着色器效果的完整指南,请参阅此 link: Grayscale Effect - A Pixel Shader Effect in WPF

根据需要对每个 Window 应用效果。