none
Ajuda com binding RRS feed

  • Pergunta

  • E ai pessoal, estou com problema no databinding

    minha classe:

     

    class Contato : INotifyPropertyChanged
    {
      private string nome;
    
      public string Nome
      {
       get { return nome; }
       set 
       { 
        nome = value;
        OnPropertyChanged("Nome");
       }
      }
    
      public event PropertyChangedEventHandler PropertyChanged;
    
      protected void OnPropertyChanged(string nomeDaPropriedade) 
      {
       if(PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(nomeDaPropriedade));
      }
    }
    

     


    e o xaml:

     

    xmlns:local="clr-namespace:SIGED.Model"
    
    ...
    
    <Grid.Resources>
     <local:Contato x:Key="instanciaDeContato"/>
    </Grid.Resources>
    <Grid.DataContext>
     <Binding Source="{StaticResource ResourceKey=instanciaDeContato}"/>
    </Grid.DataContext>
    
    ...
    
     <TextBox Text="{Binding Path=Nome}" />
    

     


    Estou fazendo isso em um usercontrol, mas em uma window também não está indo.

    Hora que chega no if(PropertyChanged != null) o valor está nulo, alguém sabe o que pode ser?

    desde ja, obrigado


    sexta-feira, 8 de julho de 2011 04:32

Respostas

  • Paulo,

    Com esse código realmente é para o PropertyChanged estar null mesmo... Isso acontece pois não tem nenhum controle de UI "escutando" esse evento... Uma vez que você linka essa instância de contato a um controle através de um Binding o mesmo deixará de ser null...

    Para fazer um teste, você pode dar um nome no seu grid (x:Name = "seuGrid", por exemplo) e, no click do seu botão, você pega a instância de Contato que está linkada ao grid... Essa instância não vai estar com o PropertyChanged null, já que ela está ligada ao grid...

    ((Contato)seuGrid).Nome = "Paulo";


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    segunda-feira, 11 de julho de 2011 18:22
    Moderador

Todas as Respostas