TextBox - 绑定属性不会刷新自身

时间:2010-08-29 13:15:13

标签: wpf textbox refresh data-binding

我有一个文本框,Text属性就像那样绑定

   <TextBox Name="txtBox">
        <TextBox.Text>
            <Binding Path="Data">

            </Binding>
        </TextBox.Text>
    </TextBox>

可以在我的程序中的各个位置更改提交的数据。但是,如果我在另一个控件中更改了归档数据,则t txtBox Text属性不会刷新自身。我仍然可以看到旧的价值(尽管数据字段已被更改)。 有没有办法强制文本框刷新itselft或某事?

2 个答案:

答案 0 :(得分:5)

为了让文本框知道它绑定的数据何时发生变化,它所绑定的类必须实现INotifyPropertyChanged。下面是C#中的一个例子。如果将文本框绑定到属性Data,则文本框应在执行Data属性的setter时更新。请注意,INotifyPropertyChanged将需要对System.ComponentModel命名空间的引用(在C#中使用或在VB中导入)。

public class MyData : INotifyPropertyChanged
{
    string _data;

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public string Data
    {
        get
        {
            return _data;
        }

        set
        {
            _data = value;
            this.OnPropertyChanged("Data");
        }
    }
}

答案 1 :(得分:0)

您的Data属性所有者对象是否实现了INotifyPropertyChanged? 如果没有实现它并触发PropertyChanged当你的set属性被调用时