2017-06-30 4 views
0

Aide! Cela fait maintenant une semaine que j'ai commencé à essayer de créer une application MVVM dans VB.NET. Malheureusement, 98% de la documentation est orientée C#. J'ai trouvé quelques indices mais je n'ai pas encore toutes les réponses ...WPF MVVM VB.Net application de vues multiples

Ce que je veux faire: Une application avec 3 vues: LoginView, View1 et View2. Si aucun utilisateur n'est connecté, le loginView s'affiche (ce qui est correct). Lorsque l'utilisateur est connecté, je devrais charger View1 ou View2 concernant ses autorisations.

Il devrait être assez simple, mais que je trouve à peine les morceaux de ce puzzle que je presque perdu tous mes cheveux ...

Première question: Dans le LoginView comment puis-je vérifier les informations d'identification utilisateur? Comme je ne peux pas lier toute propriété à la PasswordBox, j'ai trouvé une doc disant que je devrais le faire de cette façon:

<Button x:Name="btnLogin" Content="Log in" 
       Command="{Binding Path=AuthenticateUser}" 
       CommandParameter="{Binding ElementName=txtPassword}"/> 

Mais si je réussi à exécuter une commande sans paramètres, je ne peux pas trouver comment exécuter une commande WITH parameters. Une idée simple?

Pour exécuter une commande à partir d'un bouton, j'utilise la classe RelayCommand trouvé là: Implementing RelayCommand (MVVM) in VB.NET: Syntax problems

Je définis une propriété comme ceci:

Dim _relayCmd As New RelayCommand(AddressOf Authentication) 
    Public ReadOnly Property AuthenticateUser As ICommand 
     Get 
      Return _relayCmd 
     End Get 
    End Property 

    ' Authentication method 
    Private Sub Authentication(ByVal _passwordBox As PasswordBox) 

     'do something... 
    End Sub 

question Deuxième: Une fois que l'utilisateur est connecté, comment je passe à View1 ou View2? J'ai lu des doc disant que je devrais utiliser une collection observable de mes vues et naviguer à travers elle. Mais je devrais changer le datacontext de mon MainWindowView. Toujours pas trouvé le bon chemin dans VB.

Je ne veux pas que vous fassiez tout pour moi à la place je voudrais trouver un tutoriel facile qui peut expliquer clairement comment cela fonctionne dans VB.

Merci pour votre aide!

Répondre

1

Vous pouvez lancer le paramètre de commande à un PasswordBox:

Dim _relayCmd As New RelayCommand(AddressOf Authentication, Function(obj As Object) 
Return True 
End Function) 
Public ReadOnly Property AuthenticateUser As ICommand 
    Get 
     Return _relayCmd 
    End Get 
End Property 

Private Sub Authentication(ByVal _passwordBox As Object) 
    Dim passwordBox = TryCast(_passwordBox, PasswordBox) 
    'do something... 
End Sub 

Quant à votre deuxième question, vous n'avez pas fourni suffisamment de détails. Mais s'il vous plaît poser une autre question si vous avez un autre problème.

+1

Encore une fois, vous m'avez sauvé la vie! Maintenant que vous l'avez écrit, la réponse semble si évidente! Je vous remercie! – Dams