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

Développement Windows Discussion :

C#, WPF problème UserControl


Sujet :

Développement Windows

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Points : 44
    Points
    44
    Par défaut C#, WPF problème UserControl
    Bonjour,

    Voici mon problème :

    Je n'arrive pas à modifier le Text d'un TextBox de mon contrôle utilisateur que j'ai créé, depuis une autre fenêtre.

    Ci dessous la partie concerné :

    La classe Input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private double decalage;
     
    public Input(double decalage)
            {
                this.decalage = decalage;
            }
     
    public Direction Direction
            {
                get { return direction; }
                set { direction = value; }
            }

    J'ai construit un contrôle utilisateur dans lequel j'ai placé un textBox :
    UserControl:
    XAML :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Name="tbDecalage" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Width="42" Height="23"/>

    Code .cs du controle :

    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
    public partial class InputUC : UserControl
        {
            private Input input;
     
            public InputUC()
            {
                InitializeComponent();  
            }
            public InputUC(Input input)
            {
                InitializeComponent(); 
                this.input = input;
                this.tbDecalage.Text = this.input.Decalage.ToString();
            }
     
            public Input Input
            {
                get { return input; }
                set { input = value; }
            }
     
            public String modif
            {
                get { return this.tbDecalage.Text; }
                set { this.tbDecalage.Text = value; }
            }
        }

    Ma MainFrame utilisant ce contrôle :
    XAML :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <MyUserControl:InputUC Name="toto" HorizontalAlignment="Left" Margin="167,10,0,0" VerticalAlignment="Top" Width="170"/>

    Code . cs de la MainFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public MainWindow()
          {
                InitializeComponent();
                this.toto = new InputUC(new Input(25));
            }

    Rien ne s'affiche dans le TextBox quant j'execute MainWindows ...
    Merci pour votre aide

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    En gros, le parseur XAMl à déjà crée un arbre avec les contrôles,etc...et si tu assigne comme tu fais en C#, il ne s'en rends pas compte.

    Ce que tu dois faire c'est l'enlever du panel (avec panel.Children.Remove) et puis le rajouter avec Children.Add. Mais c'est un peu moche. Le mieux est peut-être de rajouter une propriété sur le ton usercontrol ou tu peux assigner in Input.
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    Merci, en effet, si je met :
    (ww étant mon grid contenant mon textBox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ww.Children.Remove(toto);
    ww.Children.Add(new InputUC(new Input(25)));
    sa marche mais sa ne le place pas au bon endroit donc c'est pas cool.

    Par contre je ne comprend pas bien :

    "Le mieux est peut-être de rajouter une propriété sur le ton usercontrol ou tu peux assigner un Input."

    Vous voulez dire dans le XAML ?

  4. #4
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Je veux dire si tu ajoute une propriété dans ton usercontrol, et dans le constructeur de la page, au lieu de faire :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InitializeComponent();
    this.toto = new InputUC(new Input(25));

    tu fais
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InitializeComponent();
    this.toto.MaPropriété = new Input(25);

    Et dans le Get de la propriété, tu assigne au textbox de ton usercontrol, comme tu le fais dans le constructeur du controle.
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

Discussions similaires

  1. [WPF] Probléme de binding dans un UserControl :(
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 17/07/2008, 15h51
  2. [WPF] Problème avec Trigger
    Par Heroes dans le forum C#
    Réponses: 7
    Dernier message: 16/07/2007, 16h58
  3. [WPF]Problème d'update de binding
    Par guitoux1 dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 12/06/2007, 17h42
  4. [WPF] Problème de sécurité pour appel d'une fonction COM
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 12/06/2007, 08h02
  5. Réponses: 2
    Dernier message: 05/05/2006, 15h10

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