IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[Binding / DataGrid] Récupérer la dernière valeur d'une liste


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 27
    Points : 56
    Points
    56
    Par défaut [Binding / DataGrid] Récupérer la dernière valeur d'une liste
    Bonjour,

    je suis en train de développer un logiciel dans lequel j'ai un BT qui contient plusieurs informations simples (ID, nom, valeur de départ) et une liste de valeurs.

    BT
    - ID_BT : int
    - nom_BT : string
    - valeurDepart_BT : float
    - valeurs_BT : list<Valeur>

    Valeur
    - ID_Valeur : int
    - valeur_Valeur : float

    J'ai réussi à faire le binding d'une dataGrid pour afficher les informations simples mais j'aimerai avoir une autre colonne dans laquelle la dernière valeur de la liste de valeurs s'affiche.

    Les informations sont récupérées d'une base de données et le dataContext de la grille est basé sur une list<BT>.

    J'ai déjà essayé en faisant

    <DataGridTextColumn Binding="{Binding Path=valeurs.last(), ElementName=valeur_Valeur" />

    mais cela ne fonctionne pas.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye:

    <DataGridTextColumn Binding="{Binding Path=valeurs, ElementName=valeur_Valeur" />

    Et utilise un Converter dans lequel tu fais ton .last()

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 27
    Points : 56
    Points
    56
    Par défaut
    Salut,

    je débute en WPF et je ne connaissais pas les Converter. J'avais testé avec Valeur[0].Valeur_Valeur, cela fonctionnait mais Valeur[Valeur.Count].Valeur_Valeur ne marchait pas.

    Du coup j'ai fais un Converter comme tu me l'as conseillé, seulement je n'ai toujours pas d'affichage, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    namespace converter
    {
        [ValueConversion(typeof(EntitySet<Valeur>), typeof(Valeur))]
        class ConverterLastValeur : IValueConverter
        {
            public object Convert(object values, Type targetType, object parameter, CultureInfo culture)
            {
                Console.WriteLine("convert");
     
                return (( (EntitySet<Valeur>) values).Last());
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        }
    }
    Et le XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <UserControl x:Class="projetBT.VueBT"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 xmlns:conv="clr-namespace:converter"
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
     
        <UserControl.Resources>
            <conv:ConverterLastValeur x:Key="converteur" />
        </UserControl.Resources>
     
        ...
     
        <DataGridTextColumn Binding="{Binding Nom_BT}" Header="Nom" />
     
                        <DataGridTextColumn Binding="{Binding Valeur0_BT}" Header="Valeur de départ" />
     
                        <DataGridTextColumn  Header="Dernière valeur" Binding="{Binding Path=Valeur, ElementName=Valeur_Valeur, Converter={StaticResource converteur}}" />
    Seulement rien ne s'affiche. J'ai mis un point d'arrêt dans le convertisseur et le programme ne semble pas passer par là.

    Aurais-tu une idée ?

    Merci d'avance



    EDIT : J'ai finalement réussi, en fait ElementName n'a pas l'air de convenir à la manipulation d'une structure. J'ai donc changé mon Converter pour qu'il me renvoie Valeurs.Last().Valeur_Valeur directement et j'ai utilisé ce binding :

    Binding="{Binding Path=Valeur, Converter={StaticResource convertisseur}, Mode=OneWay}"

    Merci pour le coup de main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la dernière valeur d'une Listbox
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/09/2014, 12h25
  2. Réponses: 0
    Dernier message: 12/01/2010, 12h40
  3. Récupérer toutes les valeurs d'une liste déroulante
    Par christgh dans le forum Langage
    Réponses: 4
    Dernier message: 10/12/2008, 21h17
  4. Se positionner sur la dernière valeur d'une liste déroulante
    Par lthibert dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/03/2008, 15h16
  5. dernière valeur d'une liste par défaut
    Par faulk dans le forum Access
    Réponses: 2
    Dernier message: 11/07/2006, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo