2010-11-24 2 views
31

в XAML файл (а WPF UserControl), есть ли способ, чтобы ссылаться на внутренний класс «B», определенный в другом классе «А»?Создание экземпляра вложенного класса в XAML

public class A 
{ 
    public class B 
    { 
    } 
} 

Что-то вроде:

<local:A.B ... /> 

Этот синтаксис не работает, потому что "B" интерпретируется как свойство с именем "B" в классе "А".

Я пробовал более экзотические синтаксисы типа «::» или «+», но никто не работает.

Я в настоящее время использую Silverlight 4 с VS2010.

Заранее за вашу помощь.

+0

есть класс B другой контроль? – 2010-11-24 18:46:41

+0

Нет, это команда, но может быть. – Pragmateek 2010-11-24 18:59:53

+1

Я не очень хорошо знаком с командой WPF, в ответе на этот вопрос оператор точки используется для получения команды: http://stackoverflow.com/questions/601393/custom-command-wpf Но, эти команды определенных в другом классе. – 2010-11-24 19:19:11

ответ

31

Я искал и искал, потому что, если это возможно, я хотел бы знать. К сожалению, я нашел это на msdn:

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

Итак, похоже, вы не можете ссылаться на вложенный класс с помощью оператора точки. Что касается альтернативных способов добраться до этого внутреннего класса через XAML, мне еще не удалась в моих поисках. : o (Но это довольно интересная проблема, поэтому я продолжу поиск. Может быть, мне удастся!)

36

Этот вопрос довольно старый, и я не знаю, сработало бы оно с версия WPF еще в 2010 году, но теперь вы можете заставить его работать, используя «реальное» (внутреннее) имя вложенного типа:

<local:A+B /> 

Если вы когда-либо смотрели разобранном код, который, как вложенного типы выглядят так:

ParentTypeName+Nested 
Смежные вопросы