代码中定义的 WPF 数据绑定不更新 UI 元素的问题

2024-01-02

我需要在代码中定义新的 UI 元素以及数据绑定,因为它们将在运行时后实现。这是我正在尝试做的事情的简化版本。

数据模型:

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 事件,但文本块不会更新。谁能告诉我为什么?

谢谢, 本


其根源是我传递给 PropertyChangedEventArgs 的字符串与属性名称不完全匹配。我有这样的事情:

public int HouseNumber
{
    get { return _houseNumber; }
    set { _houseNumber = value; NotifyPropertyChanged("HouseNum"); }
}

应该是这样的地方:

public int HouseNumber
{
    get { return _houseNumber; }
    set { _houseNumber = value; NotifyPropertyChanged("HouseNumber"); }
}

哎呀!感谢您朝着正确的方向推动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码中定义的 WPF 数据绑定不更新 UI 元素的问题 的相关文章

随机推荐