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 :

[WPF] ajouter dynamiquement un control dans un dataTemplate.


Sujet :

Windows Presentation Foundation

  1. #1
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut [WPF] ajouter dynamiquement un control dans un dataTemplate.
    Bonjour,

    Je cherche à ajouter dynamiquement un control WPF à certains élément d'un treeview. Les contenus des éléments du treeview sont définis grâce à des templates (HierarchicalDataTemplate et DataTemplate). Je cherche donc à ajouter, par le code, un control à l'intérieur de mon DataTemplate.

    Voici à quoi ressemble mon DataTemplate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DataTemplate x:Key="MyTemplate">
                <StackPanel>
                    <TextBox Background="Red" Text="{Binding Path=.}" />
                </StackPanel>
            </DataTemplate>
    Et le code pour ajouter dynamiquement le contrôle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var datatemplate = (DataTemplate)Application.Current.MainWindow.FindResource("MyTemplate");
    var content =  (StackPanel)datatemplate.LoadContent();
    content.Children.Add(new Label { Content = "Nouveau control." });
    Malheureusement rien ne se passe. Savez-vous pourquoi ?

    Merci d'avance pour votre aide,

    mathmax
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  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
    Si je te suis bien, tu veux modifier, à la volée, le contenu de ton DataTemplate ?

  3. #3
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    exactement.
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Tu dois pouvoir créer ton DataTemplate via le code avec un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataTemplate template = new DataTemplate();
     
    FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory( typeof( TextBlock ) );
    factoryTextBlock.SetBinding( TextBlock.TextProperty, new Binding( "Name" ) );
     
    template.VisualTree = factoryTextBlock;
    treeView1.ItemTemplate = template;

    Après tu peux très bien définir un FrameworkElementFactory de type dockpanel (stackpanel, ou autre conteneur...) auquel tu ajoutes ce que tu veux (Image, Label, ...).
    Pour ajouter il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    factoryDockPanelBlock.AppendChild( factoryTextBlock ); // où factoryDockPanelBlock est un FrameworkElementFactory de type dockpanel

    Après modifier dynamiquement un DataTemplate, je crois que ce n'est pas faisable... (à ma connaissance).

    Binoo.

  5. #5
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Ok merci.
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  6. #6
    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
    Citation Envoyé par binoo Voir le message
    Après modifier dynamiquement un DataTemplate, je crois que ce n'est pas faisable... (à ma connaissance).
    +1: c'est ce que j'allais dire aussi....

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    on peut le créé dynamiquement en fonction de certains facteurs ? mais apres on peut pu le modifier c'est ça ?

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

Discussions similaires

  1. [C# WPF] ajout dynamique <TextBlock> dans <Grid>
    Par luc648 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 06/06/2010, 21h39
  2. Ajout dynamique de controles ASP.Net dans le code HTML
    Par vince_lille dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/10/2008, 10h56
  3. [C#] Ajout en dynamique de controles dans un PlaceHolder
    Par fredo_lefran dans le forum ASP.NET
    Réponses: 16
    Dernier message: 06/07/2006, 14h41
  4. Réponses: 2
    Dernier message: 10/05/2005, 15h54
  5. [VB6] Création dynamique de controles dans un SSTab
    Par Txomin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/12/2004, 11h13

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