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][C#] DataTemplate qui marche en WPF mais pas en C#


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 36
    Points
    36
    Par défaut [WPF][C#] DataTemplate qui marche en WPF mais pas en C#
    Bonjours,

    J'ai actuellement un petit soucis, qui peut paraitre idiot mais je ne vois pas.

    Sur un projet de test WPF, j'ai créé un DataTemplate qui me permet d'afficher un textbox si le champs de mon listview est un String, une CheckBox si c'est un booleen etc...

    Seulement, sur notre projet, on travaille en totale généricité. C'est a dire que vu qu'on peut travailler avec n'importe quel type d'objet, et qu'on s'est appercu que l'on atteignait une limite a WPF sur ce point la, on a complétement réécris l'initialize component de notre controle..

    Seulement lorsque je veux réécrire mon DataTemplate qui fonctionne très bien en WPF, il ne me plante pas l'appli mais il ne l'applique pas.

    Voici le code XAML de mon DataTemplate.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <GridViewColumn Header="Texte Editable" Width="50">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox Height="25" Text="{Binding Path=name}"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
    Maintenant j'ai essayé de le retraduire en C#.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    DataTemplate _myDataTemplate = new DataTemplate();
                            TextBox _myTextbox = new TextBox();
                            _myTextbox.Height = ((Double)new LengthConverter().ConvertFromString("25"));
                            //_myTextbox.Text = "{Binding Path=name}";
                            _myDataTemplate.VisualTree = new FrameworkElementFactory(typeof(TextBox));
     
                            myGridViewColumn.CellTemplate = _myDataTemplate;
    J'espere que quelqu'un pourrat me donner la piste qui me debloquerai

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Bonjour si j'ai bien compris tu essayes de créer en C# un DataTemplate ... mais pour celà je ne vois pas à quoi sert l'instance de TextBox (_myTextBox), à quel moment tu l'utilises ? est ce qu'elle a quelque chose à voir avec le DataTemplate que tu veux contruire ? (par exemple le Height tu veux qu'il soit affecter à ce DataTemplate?)
    ANIS

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Si veux créer un DataTemplate equivalent à ton exemple XAML moi j'aurais écrit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DataTemplate myDataTemplate = new DataTemplate();
    FrameworkElementFactory myFrameworkElementFactory = new FrameworkElementFactory(typeof(TextBox));
     
    myFrameworkElementFactory.SetValue(TextBox.HeightProperty, 25);
    Binding myBinding = new Binding("name");
    myFrameworkElementFactory.SetBinding(TextBox.TextProperty, myBinding );
     
    myDataTemplate.VisualTree = myFrameworkElementFactory
     
    myGridViewColumn.CellTemplate = myDataTemplate;
    Je n'ai pas testé ce code donc à valider ... à quelques fautes de frappes près je pense que ça devrait marcher
    ANIS

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    désolé de ne pas avoir répondu, mais on étais passé à autre chose et je n'ai pas pensé a regarder mes réponses.

    anisb, Merci de ta réponse mais cela ne marche hélas pas.

    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
     
    //Creation du DataTemplate.
                    DataTemplate oDataTemplate = new DataTemplate();
                    FrameworkElementFactory oFramewordkElementFactory = new FrameworkElementFactory(typeof(TextBox));
     
                    oFramewordkElementFactory.SetValue(TextBox.HeightProperty,25.0);
                    oFramewordkElementFactory.SetValue(TextBox.WidthProperty, 100.0);
                    oFramewordkElementFactory.SetValue(TextBox.VisibilityProperty, Visibility.Visible);
     
                    Binding oBinding = new Binding("Nom");
                    oFramewordkElementFactory.SetBinding(TextBox.TextProperty, oBinding);
     
                    oDataTemplate.VisualTree = oFramewordkElementFactory;
     
                    myGridViewColumn.CellTemplate = oDataTemplate;
    Le code est à peu de choses près similaire et je pense que la piste est très bonne. Mais hélas je ne trouve pas le petit truc qui ferai que ca fonctionne.

    Merci d'avance

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    En fait, ce que je cherche a faire, c'est de rendre ma liste editable, c'est à dire pouvoir lui mettre un champs texte dans chaque cellule.

Discussions similaires

  1. Script qui marche sous FF mais pas sous IE
    Par xclam dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 11/05/2007, 12h26
  2. Requete qui marche une fois mais pas deux
    Par maxvador dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/01/2007, 15h07
  3. Fonction qui marche sous FF mais pas IE
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 14h07
  4. Pb sur une fct qui marche sous mozilla mais pas ie
    Par chpog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/09/2005, 11h26
  5. Réponses: 2
    Dernier message: 04/06/2004, 11h11

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