{x:Static}在XAML 中意味着什么?
代码示例:
<SolidColorBrush Color="{x:Static SystemColors.ControlColor}" />
Run Code Online (Sandbox Code Playgroud) 我有一个ResourceDictionary包含字符串:
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String x:Key="Foo">Hello world</sys:String>
...
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
这个字典是主题的一部分,在某些主题中,一些字符串是空的:
<sys:String x:Key="Foo"></sys:String>
Run Code Online (Sandbox Code Playgroud)
麻烦的是,在这种情况下,我得到一个XamlParseException:
无法创建"System.String"类型的对象.CreateInstance失败,这可能是因为没有'System.String'的公共默认构造函数
我知道可以在数组资源中声明一个空字符串<x:Static Member="sys:String.Empty" />,但是我不想要一个数组...... x:Static直接使用作为资源返回标记扩展名,而不是字符串.把x:Static在sys:String元素给出了同样的错误了.
甚至可以将空字符串声明为XAML资源吗?怎么样?
我的情况是这样的.我在WPF解决方案下有多个项目,构成我正在开发的多层应用程序.由于单独的项目有时需要访问相同的图像或xaml资源,我希望将"公共"资源集中到一个项目中,该项目可以被需要这些"公共"资源的任何其他项目引用.例如,我有一个BMP图像,我在各个控件和窗口中使用单独的项目作为横幅/徽标.看起来我应该能够将此图像作为资源添加到公共资源项目中,并从我的其他项目中引用它,而不是将图像单独添加到需要它的每个项目中.如果这是可能的,它会是什么样子,我应该怎么做呢?如果我的想法很糟糕我会接受建议,但项目将会非常大,所以我不想在整个地方添加资源.
谢谢!
PS我已经搜索了这个主题了很多但是有很多垃圾回答来自那些不知道他们在做什么的人.鉴于我对WPF比较陌生,我宁愿直接回答我的问题.