Ho una classe IValueConverter implementata e ne ho bisogno per essere iniettata usando il mio contenitore DI (Ninject).Come iniettare un convertitore in XAML
Il problema è che in XAML non esiste un modo immediatamente ovvio per ottenere il controllo sull'istanza dell'oggetto Convertitore.
Quindi il mio XAML contiene una riga simile a questa:
Source = "{Binding Path = CurrentMessage, convertitore = {StaticResource ImagePathConverter}}"
Dove, il ImagePathConverter volontà essere creato per me.
Suppongo di poter creare una classe statica "localizzatore di servizi" e chiamarla per risolvere la mia dipendenza e modificare StaticResource in una proprietà "MyServiceLocator.TheImageConverter", ma questo mi fa venire voglia di vomitare.
Spero che questa domanda possa essere risolta con alcuni frammenti di codice che mirano specificamente al codice fornito - e forse un link di supporto ad un esempio. Non solo una raccomandazione per dare un'occhiata da qualche parte.
Inoltre, aspetto molto importante, supponiamo che XAML non disponga di codice code e che non possa utilizzarne uno. Sto creando un skin e non voglio un codice dietro. Quindi non posso impostare una variabile di classe nel costruttore della classe e farvi riferimento. Forse è irragionevole, non ne sono ancora sicuro.
mi interessa sapere perché è necessario il convertitore da risolvere con DI ..? – NotDan
Poiché il convertitore utilizza (dipende) una classe di formattazione, che ha dipendenze proprie e ognuna di queste dipendenze può avere anche dipendenze. Questo è l'obiettivo principale di DI: collegare tutte queste dipendenze per me. Mi chiedo se molte persone lo stanno usando solo per oggetti nuovi e non si rendono conto dello scopo principale? – PandaWood