2011-06-23 44 views
2

我花了很多時間在看代碼綁定枚舉到listboxs,和我精做時:枚舉從綁定到ListBox中導入的命名空間是無法找到

  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> 
    

    在這裏我設置的方法參數的類型的線,我得到一個錯誤

Type 'JointID' not found

我知道這將是與設置CLR的命名空間路徑:

xmlns:sys="clr-namespace:System;assembly=mscorlib" 
xmlns:mic="clr-namespace:Microsoft;assembly=Microsoft.Research.Kinect" 

(管理API的組件Microsoft.Research.Kinect.dll) 但我這樣做時,我得到一個錯誤:

Undefined CLR namespace. The 'clr-namespace' URI refers to a namespace 'Microsoft' that is not included in the assembly.

該怎麼辦?

回答

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

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

相關問題