wpf xaml inner-classes nested-class

wpf - Crear una instancia de una clase anidada en XAML



inner-classes nested-class (3)

en un archivo XAML (un WPF UserControl), ¿hay alguna forma de referenciar una clase interna "B" definida en otra clase "A"?

public class A { public class B { } }

Algo como :

<local:A.B ... />

Esta sintaxis no funciona porque "B" se interpreta como una propiedad llamada "B" en la clase "A".

He intentado sintaxis más exóticas como "::" o "+" pero ninguna parece funcionar.

Actualmente estoy usando Silverlight 4 con VS2010 .

Gracias de antemano por tu ayuda.


Esta pregunta es bastante antigua, y no sé si hubiera funcionado con la versión de WPF en 2010, pero ahora puedes hacer que funcione usando el nombre "real" (interno) del tipo anidado:

<local:A+B />

Si alguna vez buscó un código desmontado, así es como se ven los tipos anidados:

ParentTypeName+Nested


Estaba buscando y buscando, porque si esto es posible, me gustaría saber. Desafortunadamente, encontré esto en msdn :

Su clase personalizada no debe ser una clase anidada. Las clases anidadas y el "punto" en su sintaxis general de uso de CLR interfieren con otras características de WPF y / o XAML, como las propiedades adjuntas.

Entonces, parece que no puede hacer referencia a una clase anidada con el operador de punto. En cuanto a las formas alternativas de llegar a esa clase interna a través de XAML, todavía no he tenido suerte en mis búsquedas. : o (Pero este es un tema bastante interesante, entonces continuaré buscando ¡Quizás encuentre algo de suerte!: o)


. se refiere a una propiedad ; No estoy seguro de por qué XAML tampoco podría buscar una clase anidada, pero no es así.

Una clase anidada se puede representar cuando está dentro de una cadena (por ejemplo, un valor de propiedad), utilizando A+B lugar de AB :

<Label SomeProperty1="{x:Static local:A+B.SomeProperty2}" />

Como un nombre de elemento (como se muestra en la pregunta), + no está permitido, ya que el resultado ya no sería XML válido; + no es un personaje de nombre válido:
XAML es XML .
XML Spec - NameChar .

Entonces no hay solución para el caso específico sobre el que se pregunta.