Tengo una clase implementada IValueConverter y necesito que se la inyecte usando mi contenedor DI (Ninject).Cómo inyectar un convertidor en XAML
El problema es que, en XAML, no hay una forma inmediata obvia de controlar la creación de instancias del objeto Converter.
Así que mi XAML contiene una línea como la siguiente:
Fuente = "{ruta de enlace = CurrentMessage, convertidor = {StaticResource ImagePathConverter}}"
Cuando, la voluntad ImagePathConverter ser creado para mí.
Supongo que podría crear una clase estática de "localizador de servicios" y llamarla para resolver mi dependencia y cambiar el StaticResource a una propiedad "MyServiceLocator.TheImageConverter", pero eso me da ganas de vomitar.
Espero que esta pregunta se pueda responder con unos pocos fragmentos de código que se dirijan específicamente al código proporcionado, y quizás un enlace de apoyo a un ejemplo. No es simplemente una recomendación para echar un vistazo a algún lado.
Además, muy importante, suponga que el XAML no tiene un código detrás - y que no puedo usar uno. Estoy creando un piel y no quiero un código detrás. Entonces no puedo establecer una variable de clase en el constructor de la clase y hacer referencia a ella. Quizás eso no sea razonable, todavía no estoy seguro.
Estoy interesado en saber por qué necesita el convertidor para ser resueltos con DI ..? – NotDan
Porque el convertidor usa (depende) de una clase de formato, que tiene dependencias propias y cada una de esas dependencias también puede tener dependencias. Este es el objetivo de DI: conectar todas estas dependencias por mí. Me pregunto si muchas personas solo lo están utilizando para objetos nuevos y no se dan cuenta del propósito principal? – PandaWood