为什么我收到以下错误:" Windows演示基础项目wpf不支持Int16。"
我正在阅读以下MSDN文字: MSDN TEXT regrading primitives mapping
以下是我的简单代码:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<x:Int16 x:Key="cnst">12</x:Int16>
</Window.Resources>
<Grid>
</Grid>
</Window>
为什么这段代码不起作用?需要做些什么才能让它发挥作用。
我的猜测:2006
需要替换为2009
以用于将来的版本。
答案 0 :(得分:6)
Int16
等基本类型在System
命名空间(在程序集mscorlib.dll中)中定义,该命名空间未映射到x
XAML命名空间。
虽然XAML 2009将这些类型映射到x
命名空间,但您无法在MainWindow的XAML中直接使用它们,因为(根据XAML 2009语言功能MSDN页面中的WPF Support段)
在WPF中,您可以使用XAML 2009功能,但仅适用于非XAML 标记编译。用于WPF的标记编译的XAML和用于WPAM的BAML形式 XAML目前不支持XAML 2009关键字和功能。
因此,您可能只添加另一个映射System
CLR命名空间的XAML命名空间,如下所示:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...>
<Window.Resources>
<sys:Int16 x:Key="cnst">12</sys:Int16>
</Window.Resources>
...
</Window>
有关详情,请参阅MSDN上的XAML Namespaces and Namespace Mapping for WPF XAML文章。