22 may 2014

Bindear una propiedad del view model a un componente de una vista y controlar cuando cambia


Bindear una propiedad del view model a un componente de una vista y controlar cuando cambia

  • Primero tenemos que crear nuestra variable y la propiedad pública en el view model
private string _Username = string.Empty;
  • Luego en el set asignarle el valor para cuando cambie y el OnPropertyChange();
    public string Username
    {
     get { return _Username; }
     set
     {
       if (_Username != value)
       {
         _Username = value;     
         OnPropertyChanged("Username");
       }
     }
    }
    • Para poder hacer eso nuestro view model tiene que heredar de la interface INotifyPropertyChanged e implementar el evento
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] String propertyName = "")
    {
       if (PropertyChanged != null)
         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    • Ya solo queda bindear la propiedad a la vista, en este caso en un TextBox de un form
    <StackPanel>
        <Label Content="Enter username"/>
        <TextBox Width="150" Text="{Binding Username, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    </StackPanel>

    No hay comentarios:

    Publicar un comentario