Problem mit WPF Data Binding Definiert im Code Keine Aktualisierung der UI-Elemente

Muss ich definieren neuen UI-Elemente sowie die Datenbindung im code, weil Sie umgesetzt werden nach run-time. Hier ist eine vereinfachte version von dem, was ich zu tun versuche.

Daten Modell:

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));
        }
    }
}

Bindung in 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

Wenn die ersten Daten gebunden ist, wird der text-block wird aktualisiert, mit der richtigen Hausnummer. Dann, wenn ich die Hausnummer im code später, das Buch-das PropertyChanged-Ereignis feuert, aber der Textblock wird nicht aktualisiert. Kann mir jemand sagen warum?

Dank,
Ben

  • Haben Sie versucht, breakpoints zu setzen, um zu sehen, wenn Sie Erfolg erhalten, wenn Sie für die Eigenschaft?
  • Ja, ich habe eine message-box aufpoppen, wenn das Buch-das PropertyChanged-Ereignis ausgelöst wird, das geschieht bei jedem Daten-update.
  • interessanteste Antwort, IMO, ist die von @StevenRobbins , obwohl es undervoted und danach begraben innen andere Antworten
InformationsquelleAutor Ben McIntosh | 2009-01-02
Schreibe einen Kommentar