Errorusingx:Shared="False"resourceinexternalassemblyinWPF在我们的项目中,我们有一个包含一些图标的ResourceDictionary看起来像这样:x:Shared="False"属性是必需的,因为当我在多个视图中使用它时,图标会消失。现在我们想创建另一个具有相同图标的项目,因此我们决定将它们放在两个项目都引用的库项目中。但是当我们尝试运行该应用程序时,我们总是会收到错误:Sharedpropertiesinnamespace'http://schemas.microsoft.com/winfx/2006/xaml'canonlybeusedincompiledresourcedictionaries。"但我们无法摆脱x:Shared="False"属性,因为据我所知,这是阻止图标消失的唯一方法。那么我们能做些什么,通过项目引用在多个项目上共享图标和iconsthatdon'tdisappear从这个错误来看,我们可以理解x:Shared属性只能在编译后的ResourceDictionary中使用。引用自MSDNx:Sharedattribute:AResourceDictionarycontaininganx??:Shareditemmustbecompiled.AResourceDictionary不能用于松散的XAML或主题。编译的ResourceDictionary是设置页面的构建操作,在这种情况下它会在运行时转换为BAML(二进制应用程序标记语言)。通常在新的ResourceDictionary时默认设置此属性已创建。BAML是XAML,它已被解析、标记化并转换为二进制形式以提高处理XAML文件的性能。引用AdamNathanWPF书中的话:BAML不像Microsoft中间语言(MSIL);它是一个压缩的加载和解析(并且大小更小)的声明格式比普通XAML更快。BAML基本上是XAML编译过程的一个实现细节。因此始终建议在ResourceDictionary中检查此标志,因为如果它将设置Resource,在内存中将存储未打包的XAML版本,这可能会影响整个WPF应用程序的性能。您可以尝试将构建操作设置为“页面”而不是“资源”,如下所述:-https://connect.microsoft.com/VisualStudio/feedback/details/776631/using-x-shared-in-a-resourcedictionary-prevents-you-from-setting-the-file-build-action-to-resource我不确定我是否遇到过类似的事情,但这引起了共鸣。现在学到的建议是换容器。对于DrawingImage,它将包含多个向量,它们本身位于共享字典中。然后将图片作为容器中的动态资源(运行时绑定)访问(比如一个带状按钮):如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
