Enum, находящийся в импортированном пространстве имен, связанном с ListBox, не может быть найден - PullRequest
2 голосов
/ 23 июня 2011

Я потратил много времени на просмотр кода для привязки перечислений к спискам, и я прекрасно справляюсь, когда:

  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>
    

    В строке, где я устанавливаю тип параметра метода, я получаю ошибку

Тип 'JointID' не найден

Я знаю, что это как-то связано с настройкой пути к пространству имен clr:

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

(сборка, которая управляет API - Microsoft.Research.Kinect.dll) Но когда я делаю это, я получаю ошибку:

Неопределенное пространство имен CLR. URI «clr-namespace» относится к пространству имен «Microsoft», которое не включено в сборку.

Что делать?

Ответы [ 2 ]

1 голос
/ 23 июня 2011

В документации объясняется необходимость использования префикса для указания правильного пространства имен 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, связывающий комбинированный список с enum в другом пространстве имен

1 голос
/ 23 июня 2011
<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>

Попробуйте связать тип. Вы должны будете добавить свое пространство имен вверху, и перечисление должно быть общедоступным. Тогда я думаю, что вы должны иметь возможность ссылаться на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...