Ich habe eine IValueConverter implementiert Klasse und ich muss es mit meinem DI-Container (Ninject) injiziert werden.Wie injiziere ich einen Konverter in XAML
Das Problem ist, in XAML gibt es keine sofort offensichtliche Möglichkeit, Kontrolle über die Instantiierung des Converter-Objekts zu erhalten.
So enthält meine XAML einer Zeile wie folgt aus:
Source = "{Binding Path = CurrentMessage, Converter = {Static ImagePathConverter}}"
Wo die ImagePathConverter wird für mich geschaffen werden.
Ich nehme an, ich könnte eine statische Klasse "Service Locator" erstellen und sie aufrufen, um meine Abhängigkeit aufzulösen und die StaticResource in eine Eigenschaft "MyServiceLocator.TheImageConverter" zu ändern, aber das bringt mich zum Erbrechen.
Ich hoffe, dass diese Frage mit ein paar Codeschnipsel beantwortet werden kann, die speziell auf den bereitgestellten Code abzielen - und vielleicht einen unterstützenden Link zu einem Beispiel. Nicht einfach eine Empfehlung, irgendwo hinzuschauen.
Auch, sehr wichtig, nehme an, dass der XAML keinen Code-Behind hat - und dass ich keinen verwenden kann. Ich erstelle eine Haut und möchte keinen Code hinter sich. Also kann ich keine Klassenvariable im Klassenkonstruktor setzen und darauf verweisen. Vielleicht ist das unvernünftig, ich bin mir noch nicht sicher.
Ich bin interessiert zu wissen, warum Sie den Konverter müssen mit DI gelöst werden ..? – NotDan
Da der Konverter (abhängig) von einer Formatierungsklasse verwendet, die eigene Abhängigkeiten hat und diese Abhängigkeiten ebenfalls Abhängigkeiten aufweisen können. Das ist der springende Punkt von DI - all diese Abhängigkeiten für mich zu verkabeln. Ich frage mich, ob viele Leute es nur zu neuen Objekten verwenden und den Hauptzweck nicht erkennen? – PandaWood