那么,这里有什么问题......在一个WPF应用程序中,我在ResourceDictionary中定义了x-namespace:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
然后我试图实例化一个双精度词:
<x:Double x:Key="BorderWidth">30</x:Double>
但它没有编译时错误,表明不支持x:Double。
对于记录,以下工作(如果我将sys-namespace映射到mscorlib):
<sys:Double x:Key="BorderWidth">30.0</sys:Double>
答案 0 :(得分:0)
雅这些很奇怪,可以轻松搞定你。实际上你试图使用它的不仅仅是一个Double,它是四个,分别为Top,Right,Left,Bottom。
因此,而不是sys:Double,你会想要使用Thickness
来代替;
<Thickness x:Key="BorderWidth">30</Thickness>
希望这会有所帮助,欢呼。
答案 1 :(得分:0)
XAML的内置基元类型仅在XAML 2009命名空间(http://schemas.microsoft.com/winfx/2009/xaml)中可用。如果您使用2006命名空间(http://schemas.microsoft.com/winfx/2006/xaml),这些原语将无法使用。 MSDN关于XAML原语的文章有一个很好的解释:http://msdn.microsoft.com/en-us/library/ee792002(v=vs.110).aspx
修改:还有一个警告:
在WPF中,您可以使用XAML 2009功能,但仅适用于非XAML 标记编译。用于WPF的标记编译的XAML和用于WPAM的BAML形式 XAML目前不支持XAML 2009关键字和功能。一个 您可以将XAML 2009功能与WPF一起使用的场景是if 您创建了松散的XAML,然后将该XAML加载到WPF运行时 和XamlReader.Load的对象图。 WPF System.Windows.Markup.XamlReader及其Load可以处理XAML 2009 语言关键字和功能成为有效的对象图 表示。
如果您正在编译XAML,这些原语仍然无法正常工作,因此您必须映射一个&#34;系统&#34;正如您在问题中提供的示例中所做的那样,命名空间为System/mscorlib
。
此外,根据您的资源键BorderWidth
的上下文,您可能无法将Double
用于预期目的。请参阅Chris W的答案(我不应该投票,我真的很抱歉!)