无法找到从绑定到ListBox的导入名称空间的枚举

时间:2011-06-23 14:28:31

标签: c# .net wpf visual-studio xaml

我花了很多时间查看将枚举绑定到列表框的代码,我很乐意这样做:

  1. 与XAML相同的命名空间中的枚举
  2. 枚举位于以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>
    

    在我设置方法参数类型的行中,出现错误

  3.   

    未找到'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”。

    怎么办?

2 个答案:

答案 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>

PS:另见wpf binding combobox to enum in different namespace