在XAML中显示过时/不推荐使用的类用法

本文关键字:用法 XAML 显示 过时 | 更新日期: 2023-09-27 18:01:26

上下文

在我们正在开发的WPF应用程序中,由于在资源库中使用了DropShadowBitmapEffect,导致了相当大的内存泄漏。

下拉阴影被一些UserControl和我们所有的菜单用来在窗口的实际内容上投射阴影,例如:

<DropShadowBitmapEffect x:Key="PopupDropShadow" ShadowDepth="1.5" Softness="0.15" />
...
<Rectangle BitmapEffect="{StaticResource PopupDropShadow}" ... />

在我真正找到问题的原因之前,我不得不对应用程序进行了很多小时的分析。DropShadowBitmapEffect类是非托管的,并防止对象被GC’d。此外,您会注意到DropShadowBitmapEffect被标记为Obsolete,并且有一个名为DropShadowEffect的更新类修复了内存泄漏(并且是硬件加速的,因此大大提高了渲染性能(。这是实际的解决方案:

<DropShadowEffect x:Key="PopupDropShadow" ShadowDepth="1.5" />
...    
<Rectangle Effect="{StaticResource PopupDropShadow}" ... />

问题

在Visual Studio 2010中的XAML中使用时,是否可能让不推荐使用/过时的类用法在编译时引发警告

在XAML中显示过时/不推荐使用的类用法

我还没有对它进行XAML测试,但Gendarme有一条规则,可以检查是否使用了过时的代码。