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

VB.NET Discussion :

[WPF] MVVM - Envoyer des données d'une fenêtre à l'autres


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut [WPF] MVVM - Envoyer des données d'une fenêtre à l'autres
    Bonjour,

    En attendant ma formation WPF, je continue à essayer de comprendre certains fondamentaux en essayant de respecter le MVVM.

    J'ai ma 1ere fenêtre qui affiche un treeview puis lorsque je clique sur l'un des éléments enfant j'affiche les données qui lui sont liés. Mais l'une de ces données est modifiable. Ce n'est pas forcement du texte, j'ai donc une 2eme fenêtre qui met en forme la données.
    Je doit donc lui passer un paramètres, qui sera un objet classe. J'ai j'ai pas compris encore la mécanique qu'il faut utiliser pour atteindre le ModelView de la seconde fenêtre.

    Dans le ModelView de MainWindow:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Public Sub MaCommandClick()
            Dim frm As New ViewNewValue
            frm.SetDataView(VarSelected)
        End Sub
    Bien sûr cela ne fonctionne pas, la méthode SetDataView n'est pas dans ViewNewValue, mais dans ModelViewNewValue et je n'est pas créer de variable globale de ModelViewNewValue afin de me permettre d'y accéder. Je suppose qu'il y a une mécanique pour cela.

    Alors bien-sur je pourrai passer par une variable global de VarSelected dans un module, mais bon, dans mon nouveau logiciel j'essaie de me passer des modules.
    Merci

  2. #2
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut
    Tu dois utiliser un constructeur dans ta fenêtre n°2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Class Fenetre2
    #Region " Champs "    
        Private MyFrm As File ViewNewValue
    #End Region
     
    #Region " Constructeur "
        Public Sub New(Byval Frm as ViewNewValue)
            InitializeComponent()
            MyFrm = Frm
        End Sub
    #End Region
    End Class
    Dans ta fenêtre n°1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaVariable as ViewNewValue
    Dim MaFenetre as New Fenetre2(MaVariable)

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonjour r.morel, Merci pour votre contribution.

    Sa pas de souci pour ajouter dans le constructeur, mais du coup ma variable se trouve dans la Vue 2(enfin dans le code de la fenêtre n°2), j'étais partie sur cela au départ, mais après comment passer cette variable à la ModelView tout en respectant le MVVM.

    Dans le XAML de la vue 2, j'ai ajouté:
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <Window.DataContext>
            <local:ViewModelEquipment></local:ViewModelEquipment>
        </Window.DataContext>

    il faut créer le binding depuis le code de la vue 2 ?

    merci

  4. #4
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Je viens de trouver.

    En convertissant plusieurs petit exemple C# vers VB, j'ai trouvé la solution. Afin de passer la valeur de la vue vers le ModeleVue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Public class ViewNewValue
     
      Public Sub New(Byval VarSelected as ClassVar)
     
            InitializeComponent()
     
            Me.DataContext = New ViewModelNewValue
            Dim vm As ViewModelNewValue= CType(Me.DataContext, ViewModelNewValue)
            vm.SetDataView(VarSelected)
        End Sub
     
    End Class

  5. #5
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Houlllaaaa,

    Je suis fatigué moi, heureusement que les vacances arrivent, mais pourquoi j'ai pas pensé a cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Public class ViewNewValue
     
      Public Sub New(Byval VarSelected as ClassVar)
     
            InitializeComponent()
     
            Me.DataContext = New ViewModelNewValue(VarSelected)
        End Sub
     
    End Class

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/01/2008, 13h17
  2. envoyer des données sur une carte son
    Par khalifa1 dans le forum DirectX
    Réponses: 1
    Dernier message: 26/10/2007, 17h29
  3. Envoyer des données POST à une page web puis récupérer l'URL
    Par Ze moi dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/04/2007, 17h18
  4. Envoyer des données POST à une page !
    Par wishmastah dans le forum Langage
    Réponses: 11
    Dernier message: 11/04/2006, 19h37
  5. Réponses: 16
    Dernier message: 20/03/2006, 23h21

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