Legare un convertitore a un multibinding in Silverlight
Domanda
Il Converter
Proprietà nel codice dal post sul blog, Silverlight Multibinding Solution per Silverlight 4, non è una proprietà di dipendenza, quindi non posso legarla con un convertitore (che per motivi tecnici deve essere istanziato come parte dell'iniezione di unità in precedenza nell'applicazione piuttosto che come una semplice risorsa statica come parte di un controllo degli utenti).
Come posso modificare il MultiBinding
Codice per accettare un convertitore legato? Ho provato a renderlo una proprietà di dipendenza:
public IMultiValueConverter Converter { get { return (IMultiValueConverter)GetValue(ConverterProperty); } set { SetValue(ConverterProperty, value); } }
public static DependencyProperty ConverterProperty = DependencyProperty.Register("Converter", typeof(IMultiValueConverter), typeof(IMultiValueConverter), null);
Ma ho ottenuto
DipendencyProperty System.windows.data.imultivalueConverter. Il convertitore non può essere impostato su un oggetto di tipo ... legame.multibinding.
Se questa non è un'opzione praticabile, come posso legare il ConverterParameter
proprietà o ottenere qualcosa per simulare i legami di un convertitore in a MultiBinding
?
Soluzione
L'ho risolto usando il percorso "Bindings simulate", anche se non è la mia preferenza se qualcuno ha un'altra risposta. Quello che ho fatto invece non è stato costruire il convertitore tramite iniezione di dipendenza, ma invece ha fatto utilizzare la posizione del servizio per ottenere le dipendenze necessarie. Generalmente preferisco l'iniezione di dipendenza alla posizione del servizio. La "posizione del servizio" era una questione di archiviazione del contenitore unity nelle risorse globali dell'applicazione; Da lì non è difficile ottenere ciò di cui ho bisogno.