2010-12-07 4 views
1

J'ai un usercontrol dont le contexte est un objet donné Foo.obtenir le contexte dans le convertisseur?

J'ai une zone de texte en mode lecture seule, dont le texte change en fonction d'une valeur sélectionnée dans une liste déroulante (qui est liée dans les deux sens). La valeur de la zone de texte utilise les valeurs de beaucoup de champs dans Foo.

Pour l'instant, j'ai écrit un convertisseur Text="{Binding ComboboxValue, Converter={StaticResource MyTextConverter}} et code-behind, selon le ComboboxValue, je dois retourner une chaîne composée d'autres valeurs de Foo. Le problème est que je ne peux pas accéder au DataContext dans le convertisseur, et je ne peux pas le passer. Si je lie le contexte sans chemin (en utilisant Text="{Binding Converter={StaticResource ConnectionStringTextConverter}}), il ne se déclenchera pas à chaque fois que ma valeur dans la liste déroulante change (normale).

Alors, est-ce possible de cette façon? Ou je suis obligé d'utiliser l'événement sélectionné de la liste déroulante?

Merci

PS: En fait, ce que je dois est de lier la propriété Text de la zone de texte sur mon DataContext (pas de chemin), mais je dois le binding 'évaluer chaque fois qu'un changement de propriété du changement d'objet . Est-ce possible ?

+0

En fait, ce dont j'ai besoin est de lier la propriété Text de la zone de texte sur mon DataContext (pas de chemin), mais j'ai besoin que la liaison soit évaluée chaque fois qu'un changement de propriété de l'objet change. Est-ce possible ? –

+0

Oui désolé. J'ai copier/coller mon commentaire dans la question. –

Répondre

0

Vous pouvez utiliser la classe utilitaire DataContextProxy comme ceci:

Text={Binding ComboBoxValue, Converter={StaticResource MyTextConverter}, ConverterParameter={StaticResource DataContextProxy}} 

puis dans votre convertisseur saisir le paramètre de conversion et de le jeter à un DataContextProxy et utiliser sa propriété DataSource.

Questions connexes