Een converter binden aan een MultiBinding in Silverlight

De eigenschap Converter in de code van het blogbericht, Silverlight MultiBinding-oplossing voor Silverlight 4 , is geen afhankelijkheidseigenschap, dus ik kan het niet binden met een converter (die om technische redenen moet worden geïnstantieerd als onderdeel van Eenheidsinjectie eerder in de toepassing dan als een eenvoudige statische hulpbron als onderdeel van een gebruikerscontrole).

Hoe kan ik de MultiBinding -code wijzigen om een ​​gebonden converter te accepteren? Ik heb geprobeerd om er een afhankelijkheidseigenschap van te maken:

public IMultiValueConverter Converter { get { return (IMultiValueConverter)GetValue(ConverterProperty); } set { SetValue(ConverterProperty, value); } }
public static DependencyProperty ConverterProperty = DependencyProperty.Register("Converter", typeof(IMultiValueConverter), typeof(IMultiValueConverter), null);

maar ik heb het

DependencyProperty System.Windows.Data.IMultiValueConverter. Converter kan niet worden ingesteld op een object van het type ... Binding.MultiBinding.

Als dit geen haalbare optie is, hoe kan ik dan de eigenschap ConverterParameter binden of iets ophalen om koppelingen van een conversieprogramma te simuleren tot een MultiBinding ?

0
@ punker76, ik weet niet zeker of ik je volg. Ik heb bijvoorbeeld 3 eigenschappen van een multi-bound view-model, maar ze moeten een converter doorlopen om goed te kunnen formatteren in de weergave. De converter zelf kan (voor zover ik weet) geen statische bron zijn omdat it afhankelijkheden heeft geïnjecteerd in de constructor.
toegevoegd de auteur Kit, de bron
@ punker76, omdat het voldoende complex is om te creëren dat het niet handig is om een ​​statische bron te maken. De converter gebruikt services om informatie op te zoeken, zodat het weergegeven eindresultaat "er goed uitziet" als het wordt geformatteerd.
toegevoegd de auteur Kit, de bron
waarom bind je je gegevens ook niet aan de MultiBinding? dan heb je de gegevens in de meerwaarde-omzetter en je converter wordt ook geactiveerd als je gegevens veranderen.
toegevoegd de auteur punker76, de bron
Mh, ik heb helaas nog niet begrepen waarom je een converter wilt binden?
toegevoegd de auteur punker76, de bron

1 antwoord

Ik heb dit opgelost met behulp van de "gesimuleerde bindingen" -route, hoewel dat niet mijn voorkeur is als iemand een ander antwoord heeft. Wat ik in plaats daarvan deed, was dat ik de omzetter niet via afhankelijkheidsinjectie opbouwde, maar in plaats daarvan de servicelocatie gebruikte om de benodigde afhankelijkheden te krijgen. Over het algemeen geef ik de voorkeur aan injectie van de afhankelijkheid van de locatie van de service. De "servicelocatie" was een kwestie van het opslaan van de Unity-container in de globale resources van de toepassing; vanaf daar is het niet moeilijk om te krijgen wat ik nodig heb.

0
toegevoegd
Ik heb deze luxe nog niet, maar hier is een SL5-oplossing voor iedereen die geïnteresseerd is: codeproject.com/KB/silverlight/…
toegevoegd de auteur Kit, de bron