2011-12-29 16 views
5

Quiero crear una clase de utilidad simple que no tenga elementos visuales y crearla en XAML para poder definir enlaces de datos. Intenté crear una clase derivada de DependencyObject y crearla en la sección Window.Resources, pero no llama a ningún constructor.¿Cómo crear una instancia de clase en XAML?

+0

que he encontrado solución para este problema sucia - colocar 'FindResource ("myClass");' en forma principal constructor. – Poma

+0

Nice little hack :) – BigL

Respuesta

1

Parece que las instancias se crean cuando realmente las usa. He encontrado una solución sucia para este problema: colocar FindResource("myClass"); en el constructor de formulario principal.

4

Puede instancia su clase en el App.xaml, sólo tiene que añadir el espacio de nombres a ella con

xmlns:yourNamespace="clr-namespace...." 

Es fácil la ayuda de IntelliSense.

Y luego, en Application.Resources crear su clase

<Application.Resources> 
    <yourNamespace:YourClass x:Key="yourClassInstanteName" />  
</Application.Resources> 

espero que esto le ayuda.

+0

Lo hice. El problema es que la instancia de la clase no se crea en tiempo de ejecución (simplemente intente soltar el punto de interrupción en el constructor). – Poma

+3

Parece que las instancias se crean cuando * usa * ellos realmente – Poma

+0

sí, pero sus enlaces lo están usando así que debe instanciarlo – BigL

0

Sé que estoy publicando en una Pregunta anterior, pero me encontré con esto al tratar de encontrar las respuestas yo mismo. El gran código L publicada era de hecho correcta:

xmlns:yourNamespace="clr-namespace...." 

Coloque una copia de los recursos de aplicaciones:

<Application.Resources> 
    <yourNamespace:YourClass x:Key="yourClassInstanteName" />  
</Application.Resources> 

La clave adicional para esta información es que la clase debe tener un constructor por defecto. Así, en la fuente de la clase debe tener un método de este modo:

public yourClassName() 
Cuestiones relacionadas