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] Comment cloner dynamiquement un tabitem?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 20
    Points
    20
    Par défaut [WPF] Comment cloner dynamiquement un tabitem?
    bonjour,

    j'ai créé un tabitem(tab2) et je voudrais qu'il soit identique au tab1 déjà en place? comment faire ?

    merci de m'aider.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu prends le contenu de ton tab1, tu le met dans un UserControl. Ensuite, dans chaque tabitem, tu mets ce UserControl => tout tes TabItems sont identiques

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Oui mais si on a le même problème et que l'on doit le rajouter par code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabitem newtab = new tabitem();
    ....

  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
    La solution proposée ne dépendait pas d'un type de code. En C# ou Xaml, c'est pareil.

    Tu arriveras à un moment donné à quelque chose comme ça :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    newtab.Header = "Onglet 01";
    newtab.Content = new UserControl1();

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Je trouve que c'est pas évident par code
    J'ai besoin de créer des colonnes en dynamique dans une Datagrid
    Et je ne sais pas toujours ou il faut associer les controles.


    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
    22
    23
    24
    25
    26
    27
    DataGridTemplateColumn colx = new DataGridTemplateColumn();
                        ComboBox cc = new ComboBox();
                        cc.Name = "Cbocc";
                        cc.ItemsSource = viewcollab;
     
                        cc.DisplayMemberPath = "PRENOM";
                        colx.Header = cc;
     
                        cc.SelectedIndex = i;
     
                        colx.IsReadOnly = false;
                         DataTemplate da = new DataTemplate();
     
                        da. Ici Je ne sais pas ou lui dire que mon datatemplate
    va contenir un Textbox
     
                        TextBox tt = new TextBox ();
                        colx.CellTemplate = da;
     
                        tt.Name = "TxtSaisie";
     
                        ((System.Windows.Controls.TextBox)(tt)).TextChanged += new System.Windows.Controls.TextChangedEventHandler(this.TxtSaisie_TextChanged);
     
                        ((System.Windows.Controls.TextBox)(tt)).GotMouseCapture += new System.Windows.Input.MouseEventHandler(this.TxtSaisie_GotMouseCapture);
     
                        Datagrid.ColumnWidth = DataGridLength.SizeToCells;
                        Datagrid.Columns.Add(colx);

  6. #6
    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
    Du coup pourquoi passer par du code c#
    Le faire en c#, c'est toujours possible, mais c'est souvent très fastidieux.

    Sinon pour les DataTemplate, c'est particulier (utilisation de FrameworkElementFactory). Il y a un exemple ici :
    http://www.developpez.net/forums/d48...e/#post2912199

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup pour l'exemple , en fait Je passe en code c# parce que je dois créer mes colonnes dynamiquement,je ne sais pas au départ combien il y aura de colonnes dans mon datagrid.

    j'ai repris l'exemple mais le Style ne s'applique pas
    Je dois certainement faire une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Style ss = (Style)FindResource("TextBoxStyleEncais");
        Path p = new Path();
         p.SetResourceReference(StyleProperty,ss);
         p.Name = "StyleCol";
     
        factoryTextBox.SetBinding(TextBox.StyleProperty,new Binding(p.Name));

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Je viens de trouver une solution , ca marche mais je dois faire un Textbox en Référence (Bonne solution ?)

    Si c'est bon je mets le code pour quelqun que cela pourrait interesser

    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
    TextBox tt = new TextBox();
                        tt.Name = "TxtSaisie";
                        tt.Style = (Style)FindResource("TextBoxStyleEncais");
     
     
                        DataTemplate template = new DataTemplate();
                        FrameworkElementFactory factoryTextBox = new FrameworkElementFactory(typeof(TextBox),tt.Name);
     
                        factoryTextBox.SetValue(TextBox.StyleProperty, tt.Style);
                        FrameworkElementFactory factoryTextGrid = new FrameworkElementFactory(typeof(Grid));
                        factoryTextGrid.AppendChild(factoryTextBox); 
     
                        template.VisualTree = factoryTextBox;
                        colx.CellTemplate = template;
     
                        colx.Visibility = Visibility.Visible;
     
                       dd.ColumnWidth = DataGridLength.SizeToCells;
                        dd.Columns.Add(colx);

  9. #9
    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
    Oui ça semble bon. J'avais pas noté que tu voulais définir un style pour la TextBox.

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

Discussions similaires

  1. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  2. [WPF] TreeView Comment filtrer dynamiquement l'arbre en fonction d'un texte
    Par alavoler dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 08/11/2010, 13h43
  3. [WPF] Comment charger un "Window" dans un "tabitem"?
    Par mambycamara dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 29/10/2007, 23h25
  4. [C#] Comment cloner en c#
    Par borgfabr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/04/2004, 12h00
  5. Comment cloner un composant
    Par totoranky dans le forum Composants
    Réponses: 2
    Dernier message: 12/04/2003, 15h29

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