ListBox point n'est pas mis à jour lorsque la propriété a changé de

J'ai un problème de mise à jour de zone de liste contenant ObservableCollection, quand les biens de la collecte des modifications (ajout/suppression d'éléments de la liste fonctionne très bien):

listbox a mis en ItemsSource="{Binding Path=AllPerson}" et de contexte de données dans le code derrière est définie comme ce this.DataContext = allPersonClass;.

allPersonClass contient ObservableCollection<Person> allPerson

Classe Person contient des propriétés comme le Nom etc.

J'ai écrasé personne ToString méthode pour retourner Name bien listBox affiche des données valides

J'ai essayé de faire Person mettre en œuvre INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
private void onPropertyChanged(object sender, string propertyName) {
    if (this.PropertyChanged != null) {
        PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
    }
}

public string Name {
     get { return name; }
     set {
        name = value;
        onPropertyChanged(this, "allPersonClass");
     }
}

et dans tous les biens setter a onPropertyChanged(this, "propertyName"); qui est exécuté mais listBox jamais les mises à jour déjà créé élément

Aucune idée de ce qui pourrait être mauvais?

ici est une fenêtre avec une zone de liste xaml

     <Button x:Name="btnDetail" Content="Detail" HorizontalAlignment="Left" Margin="361,249,0,0" VerticalAlignment="Top" Width="75" Click="ButtonDetailClick"/>
     <ListBox x:Name="listPerson" ItemsSource="{Binding Path=AllPerson}" HorizontalAlignment="Left" Height="170" Margin="33,29,0,0" VerticalAlignment="Top" Width="155" IsSynchronizedWithCurrentItem="True"/>
     <Button x:Name="btnLoad" Content="Load" HorizontalAlignment="Left" Margin="58,249,0,0" VerticalAlignment="Top" Width="75" Click="btnLoad_Click"/>
     <Button x:Name="btnSave" Content="Save" HorizontalAlignment="Left" Margin="138,249,0,0" VerticalAlignment="Top" Width="75" Click="ButtonSaveClick"/>

c'est la partie de la fenêtre detravail de la fenêtre lorsque des modifications sont apportées (lié à la Personne)

<TextBox Text="{Binding Path=Name}" Height="23" HorizontalAlignment="Left" Margin="118,20,0,0" Name="txtName" VerticalAlignment="Top" Width="141" />

ici est la partie AllPersonClass:

public class AllPersonClass {
  private ObservableCollection<Person> allPerson;

public AllPersonClass() {
     allPerson = new ObservableCollection<Person>();
  }

public ObservableCollection<Person> AllPerson {
     get { return allPerson; }
     set { allPerson = value; }
  }

 public void addPerson(Person newPerson) {
     allPerson.Add(newPerson);
  }


public Person getPerson(int personIndex) {
     return allPerson[personIndex];
  }
}

MODIFIER

voici la partie pertinente de la méthode pour enregistrer les modifications en vue de détail

private void OnBtnSaveClick(object sender, RoutedEventArgs e) {
     person.Name = txtName.Text;
     person.SurName = txtSurName.Text;
}

noter que des modifications sont apportées dans ObservableCollection allPerson seule zone de liste continue de s'afficher des données anciennes

Pour de l'aide ici, vous devez poster un échantillon de la Xaml, et un échantillon de votre ViewModel de la mise en œuvre montrant la notification de modification de propriété.
Fournir la mise en oeuvre de votre classe allPersonClass
je pense que j'ai besoin de dormir, alors je vais le regarder et poster mon avancement
ok bonne nuit 🙂
Cette Propriété a été Modifiée éleveur m'a donné des tic nerveux. Heureusement au moins une réponse adresses.

OriginalL'auteur Abdul | 2013-03-13