Мне нужно определить новые элементы пользовательского интерфейса, а также привязку данных в коде, потому что они будут реализованы после выполнения. Вот упрощенная версия того, что я пытаюсь сделать.
Модель данных:
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));
}
}
}
Связывание в коде:
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
Когда данные сначала связаны, текстовый блок обновляется с правильным номером дома. Затем, если я изменю номер дома в коде позже, событие PropertyChanged книги срабатывает, но текстовый блок не обновляется. Кто-нибудь может сказать мне, почему?
Спасибо,
Бен