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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top