Normalement, lorsque vous souhaitez qu'un contrôle de données sur la mise à jour ", vous utilisez l'événement" PropertyChanged "pour signaler à l'interface que les données ont changé dans les coulisses. P>
Par exemple, vous pouvez avoir un bloc de texte qui est lié à DataContext avec une propriété "displayText" p>
à partir d'ici, si le DataContext augmente l'événement de l'état de propriété avec un nom de propriétéName "displaytext", ce texte de TextBlock doit alors mettre à jour (en supposant que vous ne modifiez pas le mode de la liaison). P>
Cependant, j'ai une liaison plus compliquée qui utilise de nombreuses propriétés du DataContext pour déterminer le look final et la sensation du contrôle. Pour ce faire, je me lie directement au DataContext et utilisez un convertisseur. Dans ce cas, je travaille avec une source d'image. P>
Comme vous pouvez le constater, j'utilise une {Binding} sans chemin à lier directement sur le DataContext, et j'utilise un Imageconverter pour sélectionner l'image que je recherche. Mais maintenant je n'ai aucun moyen (que je sache) de dire cette liaison à la mise à jour. J'ai essayé d'élever l'événement de l'état de propriété avec "". comme le nom de propriété, qui n'a pas fonctionné. p>
est-ce possible? Dois-je conclure la conversion de la logique en une propriété que la liaison peut s'attacher à, ou existe-t-il un moyen de dire à la liaison à rafraîchir (sans rafraîchir explicitement la reliure)? P>
Toute aide serait grandement appréciée.
Merci!
-Adam p>
3 Réponses :
hmm, vous ne montrez pas la mise en œuvre complète. Mais je pense qu'il devrait mettre à jour, si la valeur liée à l'interface graphique fournit l'événement de l'état de propriété. P>
considère p>
Le problème est que la source d'image est liée directement à DataContext, pas une propriété du DataContext. Le convertisseur prend dans le DataContext et renvoie une source d'image. Pour clarifier, la mise à jour a lieu (fonctionne) si j'utilise une liaison qui a un chemin d'accès à une propriété de DataContext, puis appelez la propriété de cette propriété. Cependant, j'ai besoin de l'objet lui-même pour déterminer l'image (plus qu'une propriété). Merci.
eu une pensée en tapant cela. Je vais essayer de mettre une propriété sur mon objet appelé "Soi" qui se retourne juste, puis appeler la propriété ("soi"). Je vais donner cela un coup.
Je ne crois pas qu'il existe un moyen d'accomplir exactement ce dont vous avez besoin avec votre convertisseur actuel. Comme vous l'avez mentionné, vous pouvez effectuer le calcul dans votre viewModel ou changer votre convertisseur en un à partir de votre scénario spécifique (le convertisseur attaché à une classe de menuLodel et quelques-unes de ses propriétés), je me pencherais vers la mise en œuvre de la logique dans la fenêtre de vue. P> imulitvalueconverter code>. P>
La solution de contournement ici consistait à ajouter une propriété à mon objet (à utiliser comme DataContext) appelé "Self", qui a simplement retourné p>
Puis dans la liaison, j'ai utilisé cette propriété: p>
Puis quand j'appelle p>
Cela fonctionne comme un charme. P>
Merci tout. P> objet public auto {obtenez {Retourner cela; }} code> p>
Propertychanged (Ceci, New PropertyChangeDeventargs ("Self")) Code> P>
MERCI! J'étais en colère à la recherche de cela et était sur le point de le demander quand il est apparu sur mes suggestions
@Adam, quel hack axelement élégant! Gloire!