none
Appliquer des fonctions au binding RRS feed

  • 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 style

    Content="{Binding decoupe(Nom)}"

    Merci pour vos réponses

    Ludo

    vendredi 11 mai 2012 16:17

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

    vendredi 11 mai 2012 17:55
  • 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");
    }
    dimanche 13 mai 2012 16:05

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

    vendredi 11 mai 2012 17:55
  • 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");
    }
    dimanche 13 mai 2012 16:05