【问题标题】:WPF app "losing" iconsWPF 应用程序“丢失”图标
【发布时间】:2011-03-07 14:08:08
【问题描述】:

我有一个大型 WPF 应用程序,最近我们的图标消失了。我们将图像作为外部资源加载到内存中。我们有一个自定义按钮模板,我们在其中设置了一个 ImageSource 以显示图标。我使用 procmon 来查看图像文件是否已加载到内存中。我使用 WPF Snoop 来查看按钮是否正确设置了图像。只有一些图标会消失,然后如果您再次启动应用程序,它们可能都在那里。如果我将图像源更改为已加载并显示的文件之一,则使用 snoop,那么该文件也会显示,但如果我将“坏”的文件放入之前加载良好的按钮中,则图标仍然消失。当它们消失时,它们也消失了。有时,其中一个按钮上会同时出现错误的图标。

按钮模板具有用于加载和显示图像的 Imagesource 设置。

这真的很令人费解,因为一次加载一切正常,而下一次,一些图标没有加载。它们都是png文件。

有什么想法可以看下一步吗?谢谢。

【问题讨论】:

  • 调试时,是否在“输出”窗口中收到类似“无法找到资源”或类似内容的消息?
  • ProcessMonitor 显示整个文件正在被读入内存。它显示打开,读取整个文件大小,然后关闭文件。没有输出表明它找不到资源。这些是外部资源,因此它正在加载一个根本没有编译为资源的外部文件。

标签: wpf icons


【解决方案1】:

我能想到的一个原因是每个图像只有一个实例,所以如果你在一个地方使用它,它会在其他地方消失。如果您在 XAML 中定义了资源,则可以设置 x:Shared="false": http://msdn.microsoft.com/en-us/library/aa970778.aspx 否则,您必须从代码中手动创建其他实例。

【讨论】:

  • 按钮在基于自定义模板的代码中定义为this。 并且ImageSource是一个BitmapSource类型的DependencyProperty。我可以尝试将所有这些移动到资源中,但我们将它们作为外部内容来允许我们在不重新编译的情况下更改文件。
  • 这也发生在应用中单个位置使用的图像上。
猜你喜欢
  • 2015-08-20
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多