Problème avec WPF Liaison de Données Défini dans le Code, Pas de mise à Jour des Éléments de l'INTERFACE utilisateur

J'ai besoin de définir de nouveaux Éléments de l'INTERFACE utilisateur ainsi que la liaison de données dans le code parce qu'ils seront mis en œuvre après l'exécution. Voici une version simplifiée de ce que je suis en train de faire.

Modèle De Données:

public class AddressBook : INotifyPropertyChanged
{
    private int _houseNumber;
    public int HouseNumber
    {
        get { return _houseNumber; }
        set { _houseNumber = value; NotifyPropertyChanged("HouseNumber"); }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(string sProp)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(sProp));
        }
    }
}

De liaison dans le Code:

AddressBook book = new AddressBook();
book.HouseNumber = 123;
TextBlock tb = new TextBlock();
Binding bind = new Binding("HouseNumber");
bind.Source = book;
bind.Mode = BindingMode.OneWay;
tb.SetBinding(TextBlock.TextProperty, bind); //Text block displays "123"
myGrid.Children.Add(tb);
book.HouseNumber = 456; //Text block displays "123" but PropertyChanged event fires

Lorsque les données sont d'abord liés, le bloc de texte est mis à jour avec le bon numéro de la maison. Alors, si je change le numéro de la maison dans le code plus tard, le livre de l'événement PropertyChanged feux, mais le bloc de texte n'est pas mis à jour. Quelqu'un peut me dire pourquoi?

Grâce,
Ben

Avez-vous essayé de définir des points d'arrêt pour voir si ils ont atteint lorsque vous définissez la propriété?
Oui, j'ai une boîte de message apparaît quand le livre de l'événement PropertyChanged incendies, qui se produit à chaque mise à jour des données.
Le plus intéressante réponse, OMI, est par @StevenRobbins , si elle est undervoted et par la suite enterré à l'intérieur d'autres réponses

OriginalL'auteur Ben McIntosh | 2009-01-02