Meilleur auteur de réponses
Appliquer des fonctions au binding

Question
-
Bonjour,
Dans mon application, j'utilise un Pivot que je remplis d'items grâce à des bindings.
Cependant j'aimerai savoir si il est possible d'appliquer des fonctions quand on fait un binding.
Du styleContent="{Binding decoupe(Nom)}"
Merci pour vos réponses
Ludo
Réponses
-
Bonjour,
C'est tout à fait possible.
Pour ça il suffit d'utiliser un converter : Lien MSDN
En créant une classe qui hérite de IConverter, tu peux spécifier ta logique de conversion. Tu n'as plus qu'a la préciser comme ceci :
Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}"
Et la méthode Convert de ta classe converter sera appelé avec ta valeur en paramètre.
N'hésite pas si je ne suis pas assez précis.
Matthieu
- Marqué comme réponse Ciprian Duduiala lundi 14 mai 2012 07:27
-
La solution des Matthieu est effectivement pratique si tu veux réutiliser la logique du converter.
S'il s'agit d'une méthode business de ton ViewModel, tu peux simplement l'encapsuler via le getter d'une propriété :
public string NomDecoupe { get { return Decoupe(this.Nom); } }
Et pour modifier NomDecoupe à chaque modification de Nom :
private string _nom; public string Nom { get { return _nom; } } set { _nom = value; OnPropertyChanged("Nom"); OnPropertyChanged("NomDecoupe"); }
- Modifié Cyril CathalaMVP dimanche 13 mai 2012 16:06
- Marqué comme réponse Ciprian Duduiala lundi 14 mai 2012 07:27
Toutes les réponses
-
Bonjour,
C'est tout à fait possible.
Pour ça il suffit d'utiliser un converter : Lien MSDN
En créant une classe qui hérite de IConverter, tu peux spécifier ta logique de conversion. Tu n'as plus qu'a la préciser comme ceci :
Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}"
Et la méthode Convert de ta classe converter sera appelé avec ta valeur en paramètre.
N'hésite pas si je ne suis pas assez précis.
Matthieu
- Marqué comme réponse Ciprian Duduiala lundi 14 mai 2012 07:27
-
La solution des Matthieu est effectivement pratique si tu veux réutiliser la logique du converter.
S'il s'agit d'une méthode business de ton ViewModel, tu peux simplement l'encapsuler via le getter d'une propriété :
public string NomDecoupe { get { return Decoupe(this.Nom); } }
Et pour modifier NomDecoupe à chaque modification de Nom :
private string _nom; public string Nom { get { return _nom; } } set { _nom = value; OnPropertyChanged("Nom"); OnPropertyChanged("NomDecoupe"); }
- Modifié Cyril CathalaMVP dimanche 13 mai 2012 16:06
- Marqué comme réponse Ciprian Duduiala lundi 14 mai 2012 07:27