Подтвердить что ты не робот

Ссылка вложенного типа перечисления из XAML

Я не могу ссылаться на публичный вложенный тип перечисления из XAML. У меня есть класс

namespace MyNamespace
{
  public class MyClass
  {
    public enum MyEnum
    {
       A,
       B,
    }
  }
}

И я пытаюсь ссылаться на MyEnum в Xaml следующим образом:

xmlns:MyNamespace="clr-namespace:MyNamespace;assembly=MyApp"
....

{x:Type MyNamespace:MyClass:MyEnum}    // DOESN'T WORK

но VS жалуется, что он не может найти открытый тип MyEnum. Я также попытался использовать синтаксис +, основанный на одном из ответов на этот пост...

{x:Type MyNamespace:MyClass+MyEnum}    // DOESN'T WORK

но это тоже не работает.

Обратите внимание, что x:Static работает с синтаксисом +:

{x:Static MyNamespace:MyClass+MyEnum.A}  // WORKS

И если я перемещаю MyEnum из MyClass, я могу ссылаться и на него. Но нет, если он вложен...

Так что мне не хватает? Как связать вложенное перечисление из XAML с помощью x:Type? (И обратите внимание, я не пытаюсь создать что-либо, просто ссылаюсь на тип).

ОБНОВЛЕНИЕ

Похоже, это просто ошибка с дизайнером VS 2010. Дизайнер жалуется, что Type MyNamespace:MyClass+MyEnum was not found. Но приложение, похоже, работает и правильно обращается к вложенному типу. Я тоже пробовал это с вложенным классом, и он работает во время выполнения.

Возможная открытая ошибка: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/

Связанная ветка: Ошибка времени создания при вводе вложенного типа в xaml

4b9b3361

Ответ 1

MSDN говорит:

Ваш собственный класс не должен быть вложенным классом. Вложенные классы и "точка" в их общем синтаксисе использования CLR мешает другим WPF и/или XAML, такие как прикрепленные свойства.

Аналогичный вопрос здесь: Создание экземпляра вложенного класса в XAML