Wpf TextBox-绑定属性不为';不要刷新自己

Wpf TextBox-绑定属性不为';不要刷新自己,wpf,textbox,refresh,data-binding,Wpf,Textbox,Refresh,Data Binding,我有一个文本框,它的文本属性是这样绑定的 <TextBox Name="txtBox"> <TextBox.Text> <Binding Path="Data"> </Binding> </TextBox.Text> </TextBox> 文件数据可以在我的程序中的不同位置更改。但是,如果我更改其他控件中的字段数据,则t t

我有一个文本框,它的文本属性是这样绑定的

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

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

文件数据可以在我的程序中的不同位置更改。但是,如果我更改其他控件中的字段数据,则t txtBox文本属性不会刷新自身。我仍然可以看到旧值(尽管数据字段已经更改)。
有没有办法强制textbox刷新自身或其他内容?

您的数据属性所有者对象是否实现INotifyPropertyChanged?
如果在调用set属性时不执行并激发PropertyChanged,则数据属性所有者对象是否实现INotifyPropertyChanged?
如果在调用set属性时不执行并激发PropertyChanged,以便文本框知道绑定到的数据何时更改,则绑定到的类必须实现INotifyPropertyChanged。下面是C#中的一个示例。如果将文本框绑定到属性数据,则在执行数据属性的setter时,文本框应更新。请注意,INotifyPropertyChanged将需要引用System.ComponentModel命名空间(在C#中使用或在VB中导入)


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


谢谢你的回答。我会给它一个机会:)但是我想知道是否有办法手动刷新textbox.text properyy。还有一个问题。有没有办法实现此接口并使用autoproperty??基本上,我的类中的所有属性都是以public DateTime Date{get;set;}的方式实现的。关于手动刷新,这取决于您是直接从视图访问控件还是间接从viewmodel访问控件。我提供的示例间接导致绑定从viewmodel更新。因此,它可以归结为每当您引发OnPropertyChanged事件时。您可以随时引发事件-它不一定必须在setter中。关于自动属性,编译器会创建一个私有后台程序,并为您实现getter和setter。在调用setter时,我不知道有任何其他方法可以在不亲自实现setter的情况下提高OnPropertyChanged。再次感谢您的回答:)我使用了INotifyPropertyChange,这很好:)感谢您的回答。我会给它一个机会:)但是我想知道是否有办法手动刷新textbox.text properyy。还有一个问题。有没有办法实现此接口并使用autoproperty??基本上,我的类中的所有属性都是以public DateTime Date{get;set;}的方式实现的。关于手动刷新,这取决于您是直接从视图访问控件还是间接从viewmodel访问控件。我提供的示例间接导致绑定从viewmodel更新。因此,它可以归结为每当您引发OnPropertyChanged事件时。您可以随时引发事件-它不一定必须在setter中。关于自动属性,编译器会创建一个私有后台程序,并为您实现getter和setter。在调用setter时,我不知道有任何其他方法可以在不亲自实现setter的情况下提高OnPropertyChanged。再次感谢您的回答:)我使用了INotifyPropertyChange,这很好:)
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");
        }
    }
}