none
¿Esta correcto? RRS feed

  • Pregunta

  • Hola, estoy haciendo una prueba de realizar una autentificación en WPF y MVVM, lo estoy realizando usando LINQ.

    En el Identifiacion.xaml tengo lo siguiente:

    <Grid>
            <Label Content="Usuario" HorizontalAlignment="Left" Margin="123,127,0,0" VerticalAlignment="Top" Width="71" RenderTransformOrigin="-0.467,1.658"/>
            <Label Content="Contraseña" HorizontalAlignment="Left" Margin="123,199,0,0" VerticalAlignment="Top"/>
            <TextBox Name="tbNombre" HorizontalAlignment="Left" Height="23" Margin="265,127,0,0" TextWrapping="Wrap" Text="{Binding Nombre}" VerticalAlignment="Top" Width="120"/>
            <TextBox Name="tbPass" HorizontalAlignment="Left" Height="23" Margin="265,199,0,0" TextWrapping="Wrap" Text="{Binding Pass}" VerticalAlignment="Top" Width="120"/>
            <Button Content="Entrar" HorizontalAlignment="Left" Margin="222,306,0,0" VerticalAlignment="Top" Width="163" Height="41" Click="Button_Click"/>
    </Grid>

    en el identificación.xaml.vb:

    Class MainWindow
        Public vmidentificacion As ViewModelIdentifiacion
        Public Sub New()

            ' Llamada necesaria para el diseñador.
            InitializeComponent()
            vmidentificacion = New ViewModelIdentifiacion
            Me.DataContext = vmidentificacion
            ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        End Sub

        Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
            vmidentificacion.Existe_Usuario()
        End Sub
    End Class

    y por último en el ViewModel "ViewModelIdentificacion":

    Public Class ViewModelIdentifiacion
        Implements INotifyPropertyChanged
    #Region "PropertyChanged"

        Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

        Private Sub LanzarPropertyChanged(ByVal stPropiedad As String)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(stPropiedad))
        End Sub

    #End Region
        Public tdbUsuarios As tdbUsuarios = New tdbUsuarios 'esta es mi tabla de la base de datos
        Public _ctx As New DataClasses1DataContext 'contexto de la base de datos

        Public Property Nombre As String
            Get
                Return tdbUsuarios.cdbNombre
            End Get
            Set(value As String)
                tdbUsuarios.cdbNombre = value
                LanzarPropertyChanged("Nombre")
            End Set
        End Property

        Public Property Pass
            Get
                Return tdbUsuarios.cdbPass
            End Get
            Set(value)
                tdbUsuarios.cdbPass = value
                LanzarPropertyChanged("Pass")
            End Set
        End Property

        Public Sub Existe_Usuario()
            If tdbUsuarios.cdbNombre <> Nothing And tdbUsuarios.cdbPass <> Nothing Then
                Dim usuario = (From u In _ctx.tdbUsuarios Where
                           u.cdbNombre = Nombre.ToString And u.cdbPass = Pass.ToString).FirstOrDefault
                If usuario IsNot Nothing Then
                    MsgBox("existe")
                Else
                    MsgBox("no existe")
                End If
            Else
                MsgBox("Rellena los campos")
            End If
        End Sub
    End Class

    Mi pregunta es si estoy realizando bien la comprobación de si existe el usuario, lo realizo con un envento click, ¿debería realizarlo con icommand o de las dos formas es correcto?

    En caso de que se realizase con icommand, que métodos debería añadir a la ViewModel? ya que he estado leyendo muchas paginas de internet pero no encuentro ningún ejemplo claro.

    Un saludo y muchas gracias

    martes, 6 de mayo de 2014 19:31