none
Pasando objetos como en CommandParameter MVVM RRS feed

  • Pregunta

  • Hola

    Desarrollando el patron MVVM, el DataContext de mi formulario lo establezco de la siguiente forma:

    private void Application_Startup(object sender, StartupEventArgs e)
            {
                LoginForm form = new LoginForm();
                ViewModel.LoginViewModel loginViewModel = new ViewModel.LoginViewModel();
                form.DataContext = loginViewModel;
                form.Show();
            }

    Ahora la clase LoginViewModel tiene una propiedad que es un objeto que tiene dos propiedades: User y Password, pero lo que necesito es que en el Command del Button al pasar el CommandParameter necesito para mi objeto de la clase loginViewModel, necesito algo como esto (no se si es posible):

    <Button Margin="0,10,0,0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                            Command="{Binding Path=UpdateCommand}" CommandParameter="{Binding}">Login</Button>

    No se si es possible hacer lo siguiente: CommandParameter={Binding Path=DataContext.User}, Aun asi es possible enviar una de la propiedad de mi DataContext, si es posible como se hace ?

    Gracias !!

    domingo, 14 de abril de 2013 23:32

Respuestas

  • Hola

    Solucionado, lo realice de la siguiente forma:

    1. Estableciendo el dataConext:

    LoginForm form = new LoginForm();
                ViewModel.LoginViewModel loginViewModel = new ViewModel.LoginViewModel();
                form.DataContext = loginViewModel;
                form.Show();

    2. Estableciendo el Binding en la vista:

    <Label VerticalAlignment="Stretch" HorizontalAlignment="Stretch">Login</Label>
                    <TextBox Width="150" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Text="{Binding User.Login}"></TextBox>
                    <Label VerticalAlignment="Stretch" HorizontalAlignment="Stretch">Password</Label>
                    <TextBox Width="150" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Text="{Binding User.Password}"></TextBox>
                    <Button Margin="0,10,0,0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                            Command="{Binding Path=UpdateCommand}" CommandParameter="{Binding}">Login</Button>

    Que interesante que uno puede hacer: <Objeto>.<Propiedad> (Ejemplo el binding de uno de los dos conroles TextBox).

    Si alguno tiene alguna forma mas interesante de hacer este proceso me gustaria conocerlo la verdad, Gracias !!!!

    domingo, 14 de abril de 2013 23:49