我花了很多时间查看将枚举绑定到列表框的代码,我很乐意这样做:
枚举位于以Windows.etc开头的名称空间中.... 但是,我有一个包含在名称空间命名空间中的枚举,即Microsoft.Research.Kinect.Nui:
<Window.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="Joints">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="JointID" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
在我设置方法参数类型的行中,出现错误
未找到'JointID'类型
我知道这与设置clr-namespace路径有关:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:mic="clr-namespace:Microsoft;assembly=Microsoft.Research.Kinect"
(管理API的程序集是Microsoft.Research.Kinect.dll) 但是当我这样做时,我得到一个错误:
未定义的CLR命名空间。 'clr-namespace'URI是指未包含在程序集中的名称空间“Microsoft”。
怎么办?
答案 0 :(得分:1)
<Window 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"
xmlns:mic="clr-namespace:Microsoft;assembly=Microsoft.Research.Kinect"
xmlns:local="clr-namespace:YOUR NAMESPACE" >
<Window.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="Joints">
<ObjectDataProvider.MethodParameters>
<x:Type Type="{x:Type local:JointID" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
</Window>
尝试绑定类型。您必须在顶部添加命名空间,并且枚举必须是公共的。然后我认为你应该可以参考它。
答案 1 :(得分:1)
The documentation解释说您需要使用前缀来指定正确的xml / xaml命名空间。您还需要定义新的命名空间,并确保指定正确的程序集和.net命名空间。
xmlns:kin="clr-namespace:Microsoft.Research.Kinect.Nui;assembly=Microsoft.Research.Kinect"
<Window.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="Joints">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="kin:JointID" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>