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 :

Lien entre controle form et controle wpf


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Lien entre controle form et controle wpf
    Bonjour à tous!

    Voila j'ai un formulaire form1 avec un boutton dessus.
    J'ai un élément host dans le lequel j'ai inséré un componsant wpf avec un labeltext dessus.
    J'aimerais qu'en cliquant sur mon boutton du form1 que cela change le "content" de mon label du composant wpf.

    Je précise que mon boutton doit absolument rester sur le form1 (pour ceux qui me conseillerait de le mettre sur le wpf)

    Merci de votre réponse.

  2. #2
    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 peux faire en sorte que le clic sur ton bouton remplisse une propriété de ton UserControl (propriété que tu auras créées ou la propriété "Tag" du UserControl).

    Ensuite tu bind la propriété "Content" du Label sur la propriété du UserControl.

    Ce qui pourrait donner :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Label Content="{Binding ElementName=monUC, Path=Tag}" />
    où monUC est le userControl.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse binoo mais j'ai beau le tourner dans tout les sens cela ne fonctionne pas.

    Donc en fait j'ai un formulaire "Form1" avec un boutton "Button1".J'ai renseigné la valeur tag du boutton par exemple avec "rrrrrr"

    J'ai assigné à mon label de mon control WPF la valeur

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Label Content="{Binding ElementName=Button1, Path=Tag}" />
    ou
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Label Content="{Binding ElementName=Form1.Button1, Path=Tag}" />

    mais cela ne fonctionne pas! Est-ce que je dois ajouter quelque chose dans

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
    '*************************
     
        End Sub
    End Class

    Merci!

  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
    Autant pour moi, j'ai relu ton premier post et en fait tu intègre du WPF dans WindowsForm . J'avais compris l'inverse

    Voici ce que tu peux faire (en c#, par contre) :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      public partial class Form1 : Form {
     
        WpfControlLibrary1.UserControl1 monUC = new WpfControlLibrary1.UserControl1();
     
        public Form1() {
          InitializeComponent();
     
          elementHost1.Child = monUC;
        }
     
        private void button1_Click(object sender, EventArgs e) {
          monUC.Label1Value = "rrrrr";
        }
      }

    Pour ton UserControl WPF, tu auras donc défini une propriété "Label1Value" qui une fois rensignée assigne une valeur au label du UserControl WPF :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <UserControl 
      x:Class="WpfControlLibrary1.UserControl1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      >
      <Grid>
        <Label x:Name="Label1" Content="texte..." />
      </Grid>
    </UserControl>

    Code c# : 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
    28
    29
    30
    31
      public partial class UserControl1 : UserControl {
     
        public UserControl1() {
          InitializeComponent();
        }
     
        #region Label1Value
     
        public string Label1Value {
          get { return (string)GetValue(Label1ValueProperty); }
          set { SetValue(Label1ValueProperty, value); }
        }
     
        public static readonly DependencyProperty Label1ValueProperty =
                               DependencyProperty.Register(
                               "Label1Value",
                               typeof(string),
                               typeof(UserControl1),
                               new FrameworkPropertyMetadata(null, new PropertyChangedCallback(Label1ValuePropertyChanged))
                               );
     
        public static void Label1ValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
          UserControl1 uc = d as UserControl1;
          if (uc != null) {
            uc.Label1.Content = e.NewValue as string;
          }
        }
     
        #endregion
     
      }

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    La technique de binoo est bonne.

    Plus d'infos ici: http://msdn.microsoft.com/fr-fr/library/ms742215.aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci à toi Binoo pour ton exemple de code et à toi the badger man pour ton lien.

    Pour être franc j'ai pas réussi à retranscrire le code c# en vbnet ,donc du coup j'ai pas résolu ma question.

    Mais grace à vous ça m'a permis de changer de vision et du coup en changeant de piste j'ai résolu mon problème.

    En fait le but de ma question était de continuer de faire en winform ce que je n'arrivais pas à faire en wpf (et du coup de créer une interaction entre les 2).

    J'aurais du je pense poser la question de manière suivante "comment faire en wpf ce que j'arrivais à faire en winform?" Cela aurait été plus simple.

    Mais j'ai réussi à résoudre mon problème en passant par wpf grâce à ce site didacticiel très intéressant.

    http://msdn.microsoft.com/fr-fr/netf.../dd218804.aspx

    En tout cas je met le sujet en résolu car visiblement vous avez répondu à la question même si je n'ai pas pu la mettre en pratique.

    Et je vous remercie pour votre rapidité et votre efficacité car c'est grâce à des gars comme vous qu'on peut continuer notre passion!!!!

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

Discussions similaires

  1. Faire le lien entre 2 forms(débutant)
    Par oussou75 dans le forum C#
    Réponses: 6
    Dernier message: 10/03/2011, 18h25
  2. Lien entre MVC et Dialogue Control Entité ?
    Par abousa3d dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 29/03/2010, 12h52
  3. lien entre Listbox et textbox en wpf
    Par brad63 dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/01/2009, 10h05
  4. lien entre des forms
    Par d1e2w dans le forum C++/CLI
    Réponses: 16
    Dernier message: 31/08/2007, 13h41
  5. Lien entre 2 Forms
    Par beral dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/08/2006, 00h09

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