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 :

ListView, Binding d'une colonne à une autre


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut ListView, Binding d'une colonne à une autre
    Bonjour,

    J'ai chercher dans le forum un probleme similaire mais je n'ai pas trouvé.
    Alors j'ai une listView :


    <ListView Name="priceListView" Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="4" Margin="0,5,0,0" ItemsSource="{Binding Source={StaticResource ProductObjectDataProvider},Path=productPriceCollection/FMProductPrice}" SelectionChanged="priceListView_SelectionChanged">
    <ListView.View>
    <GridView>
    <GridViewColumn Header="Prix">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding Path=position}" />
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    <GridViewColumn Header="Valeur" x:Name="ColValeur" DisplayMemberBinding="{Binding Path=value}" >
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <TextBlock Name="valeurTextBlock" Text="{Binding Path=value}"/>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    <GridViewColumn Header="Variation" x:Name="ColVariation">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <ComboBox Name="valuePriceComboBox" ItemsSource="{Binding Source={StaticResource PriceCollectionObjectDataProvider}}" SelectedValue="{Binding Path=fmPrice.key}" SelectedValuePath="key" DisplayMemberPath="key" Tag="{Binding Path=description}" Width="Auto" SelectionChanged="valuePriceComboBox_SelectionChanged"/>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    <GridViewColumn Header="Libellé" x:Name="ColLibelle">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <StackPanel>
    <TextBlock Text="{Binding Path=fmPrice.description}" />
    <!--<TextBlock Text="{Binding Path=DisplayMemberBinding, ElementName=ColValeur}"/>
    <TextBlock Text="vcsdvcsdcs"/>-->
    </StackPanel>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    </GridView>
    </ListView.View>
    </ListView>



    Pour info la liste de la comboBox est binder sur un objet(collection de prix) et la valeur affiché de ma comboBox est binder sur un champ d'un autre objet(l'objet produit)
    Je voudrais lorsque je change la valeur dans ma comboBox que la colonne "Libelle" se mette à jour. Mais j'arrive pas à binder la valeur d'une colonne sur l'autre.
    Tu comprends? !!

    Merci de ton aide.
    Fichiers attachés Fichiers attachés

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tu veux que lorsque on change de valeur dans la ComboBox, cela change le contenu du libellé ?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    Oui exactement.
    En fait j'ai changé quelque trucs qui etait pas cohérents.
    Je vais essayer d'être clair :
    J'ai 2 fichiers XML. Un qui correspont à mon objet "FMproduit", et un qui correspond à une collection de prix.

    Le xml "collection de prix " :

    <?xml version="1.0" encoding="utf-8" ?>
    <ArrayOfFMPrice xmlns="" >
    <FMPrice>
    <Key>promo</Key>
    <Description>Prix promo</Description>
    </FMPrice>
    <FMPrice>
    <Key>1erPrix</Key>
    <Description>Premier prix</Description>
    </FMPrice>
    <FMPrice>
    <Key>Prixref</Key>
    <Description>Prix de référence</Description>
    </FMPrice>
    </ArrayOfFMPrice>

    Xml FMProduit (simplifié)

    <?xml version="1.0" encoding="utf-8"?>
    <!--encoding="iso-8859-1" standalone="yes"?-->
    <FMProduct xmlns="">
    <ProductPriceCollection>
    <FMProductPrice>
    <Value>15.000</Value>
    <FmPrice>
    <Key>promo</Key>
    </FmPrice>
    </FMProductPrice>
    <FMProductPrice>
    <Value>31.25</Value>
    <FmPrice>
    <Key>1erPrix</Key>
    </FmPrice>
    </FMProductPrice>
    </ProductPriceCollection>
    </FMProduct>



    La liste de combobox est binder sur la collection de prix, et la "SelectedValue" sur la "key" de l'object "FMProduit".
    J'aimerai que la colonne libéllé se binde sur "la description" qui correspond à la "key" sélectionné dans le comboBox.
    Je ne sais pas comment faire, j'ai pensé faire un binding sur control mais ça ne marche pas.

    // objectDataProvider
    // Object Produit
    <ObjectDataProvider x:Key="ProductObjectDataProvider" />
    // Object Collection de prix
    <ObjectDataProvider x:Key="PriceCollectionObjectDataProvider"/>


    <ListView Name="unitListView" Grid.Row="6" Grid.ColumnSpan="5" Margin="0,5,0,0" ItemsSource="{Binding Source={StaticResource ProductObjectDataProvider},Path=productUnitCollection/FMProductUnit}">
    <ListView.View>
    <GridView>
    <GridViewColumn Header="Variation" x:Name="ColVariation">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <ComboBox Name="valuePriceComboBox" ItemsSource="{Binding Source={StaticResource PriceCollectionObjectDataProvider}}" SelectedValue="{Binding Path=fmPrice.key}" SelectedValuePath="key" DisplayMemberPath="key" Tag="{Binding Path=description}" Width="Auto" SelectionChanged="valuePriceComboBox_SelectionChanged"/>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    <GridViewColumn Header="Libellé" x:Name="ColLibelle">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding Path=?, ElementName=valuePriceComboBox" />
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    </GridView>
    </ListView.View>
    </ListView>

    Code C#


    Dans le constructeur :
    {
    // Object FMProduct
    FMProduct fmProduct = new FMProduct();
    fmProduct = delegataire.GetFMproductSimule();
    ObjectDataProvider odpProduct = this.FindResource("ProductObjectDataProvider") as ObjectDataProvider;
    if (odpProduct != null)
    odpProduct.ObjectInstance = fmProduct;


    // Objet FmProductPriceCollection = la liste des variations de prix
    FMPriceCollection fmPriceCollection = new FMPriceCollection();
    fmPriceCollection = delegataire.GetFmPriceCollectionSimule();
    ObjectDataProvider odpPriceCol = this.FindResource("PriceCollectionObjectDataProvider") as ObjectDataProvider;
    if (odpPriceCol != null)
    odpPriceCol.ObjectInstance = fmPriceCollection;
    }

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    En faisant ton Binding par le code, tu devrais p-e y arriver....

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    ouai j'ai déja essayé... en fait c galére avec la listView je ne sais pas dans quelle item je suis...
    Je vais essayer d'utiliser le dataGrid de xceed pour me faciliter la tâche!!
    Merci quand même.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. MFC d'une colonne à une colonne et planning perpetuel
    Par mlegentil dans le forum Excel
    Réponses: 0
    Dernier message: 12/04/2014, 17h43
  3. listview, affichage du total d'une colonne
    Par zx10 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/12/2006, 16h58
  4. Listview trié sur plus d'une colonne
    Par Duan dans le forum Delphi
    Réponses: 2
    Dernier message: 26/05/2006, 03h29

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