WPF MVVM VB.Net多视图应用程序

WPF MVVM VB.Net多视图应用程序,wpf,vb.net,mvvm,multiple-views,Wpf,Vb.net,Mvvm,Multiple Views,救命啊!已经一周了,我开始尝试在VB.NET中构建MVVM应用程序。不幸的是,98%的文档是面向C的。我发现了一些线索,但我仍然没有所有的答案 我想做什么: 具有3个视图的应用程序:loginView、View1和View2。如果没有用户连接,则显示loginView(正常)。当用户连接时,我应该加载有关其权限的View1或View2 这应该很简单,但由于我几乎找不到这个拼图的碎片,我几乎失去了我所有的头发 第一期: 在loginView中,如何检查用户凭据? 由于我无法将任何属性绑定到Pass

救命啊!已经一周了,我开始尝试在VB.NET中构建MVVM应用程序。不幸的是,98%的文档是面向C的。我发现了一些线索,但我仍然没有所有的答案

我想做什么: 具有3个视图的应用程序:loginView、View1和View2。如果没有用户连接,则显示loginView(正常)。当用户连接时,我应该加载有关其权限的View1或View2

这应该很简单,但由于我几乎找不到这个拼图的碎片,我几乎失去了我所有的头发

第一期: 在loginView中,如何检查用户凭据? 由于我无法将任何属性绑定到PasswordBox,我发现一些文档说我应该这样做:

<Button x:Name="btnLogin" Content="Log in"
                Command="{Binding Path=AuthenticateUser}"
                CommandParameter="{Binding ElementName=txtPassword}"/>
第二期: 用户连接后,如何切换到View1或View2?我读到一些文件说我应该使用我的观点的可观察的集合,并在其中导航。但是我应该更改MainWindowView的datacontext。在VB中仍然没有找到正确的方法

我不想让你为我做任何事,相反,我想找到一个简单的教程,可以清楚地解释它是如何在VB中工作的


谢谢你的帮助

您可以将命令参数强制转换为
密码框

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

至于你的第二期,你没有提供足够的细节。但是如果你有其他问题,请问另一个问题。

你又一次救了我的命!既然是你写的,答案似乎很明显!非常感谢。
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