Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Vb] Acceder a un control d'une window

    28 juillet 2018 à 0:19:09

    Bonjours, je suis nouveau ici et j'ai un probleme que je pense pas très compliqué, de base je developpais des applications WindowsForm, et depuis peu j'ai commencé a developper en WPF, et je n'ai toujours pas compris apres plusieurs recherches comment acceder à un controle WPF d'une window a partir d'un autre element (autre window, usercontrol ect...).

    Pour etre plus claire c'est comme si je voulais executer cette ligne suivante mais en wpf : Form2.Label1.Truc="test"

    Je trouves ça vraiment dommage que le WPF ne se base pas de la meme façon que les applications windows form car franchement le wpf est parfait pour les belles interfaces.

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      28 juillet 2018 à 1:17:06

      Si un formulaire (ou un de ses éléments) doit agir sur un autre formulaire (ou un de ses éléments) alors il faut à un moment lui passer l'instance du formulaire (ou juste l'élément) par exemple dans le constructeur ou dans le gestionnaire associé à l'événement (clic du bouton par exemple) si le formulaire est créé juste pour ça (boite de dialogue par exemple)

      Ça a toujours été une aberration la possibilité d'accéder à une instance comme si la classe était static (et d'ailleurs c'est réalisé en arrière plan par un artifice planqué) et une des raisons de la mauvaise compréhension de la POO par ceux faisant du vb.net

      Par contre, comme je fais une allergie (toute personnelle) à WPF j'ignore s'il y a une autre méthode plus idiomatique de cette technologie

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.
        28 juillet 2018 à 14:18:33

        Ah daccord, mais merci quand meme pour le reponse :)
        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2018 à 11:51:40

          Pour les interessés j'ai trouvé une solution en attendant, peut etre pas aussi rapide que le windows form mais ca fait le travail :
          For Each form As Window In Application.Current.Windows
               If (form.GetType = GetType(MainWindow)) Then
                    CType(form, MainWindow).Label1.Content = "test"
               End If
          Next
          • Partager sur Facebook
          • Partager sur Twitter
            6 août 2018 à 17:51:10

            @Rachid88, vous n'avez toujours pas assimilé la POO (comme beaucoup de programmeurs d'ailleurs).

            La conception de WPF cherche à rendre difficile les mauvais usages et très facile les bonnes pratiques.

            WinForm le fait aussi, mais moins violemment. Mais les fonctionnalités spectaculaires de WPF ne sont possibles qu'en étant beaucoup plus strict sur les bonnes pratiques.(psychorigide même).

            Une IHM ne devrait servir qu'à l'IHM et donc ne donner aucun détails sur comment est agencé l'IHM à l'extérieur de la classe en charge de cet affichage.

            Pour faciliter bons nombres de fonctionnalités, la composition en terme de contrôles dans un formulaire n'est pas fixe (et il existe simultanément plusieurs arborescences de contrôles très différentes en fonction des usages et non facilement accessible à l'utilisateur de ces contrôles).

            @Rachid88, vous devriez arrêter de ramer contre le courant et commencer à voir toutes les fonctionnalités offertes pas WPF pour ne pas faire les bricolages que vous semblez chercher à continuer, comme le concept de MVVM des contrôles WPF.

            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

            [Vb] Acceder a un control d'une window

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown