Usuário com melhor resposta
Ajuda com binding

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
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- Marcado como Resposta Paulo Afonso Marcolino segunda-feira, 11 de julho de 2011 18:32
Todas as Respostas
-
Paulo,
Não ficou claro em que momento você está fazendo alguma alteração na instância de Contato... Aparentemente seu código está correto, você poderia dar maiores detalhes do que está tentando fazer que não está funcionando?
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
-
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- Marcado como Resposta Paulo Afonso Marcolino segunda-feira, 11 de julho de 2011 18:32
-
-
Isso! Tinha esquecido dele... Hehhe...
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima