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