WPF页面刷新:
在WPF项目中,类的属性变了,但界面值没有变,且我们也没有对类的属性做PropertyChanged的set处理.
如何实现呢?
首先我们需要实现一个INotifyPropertyChanged。
并实现一个方法:
public void OnPropertyChanged(string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
在类修改后,使用OnPropertyChanged(null);即可。
我的定义如下:
public class BaseViewModel: INotifyPropertyChanged
{ public event PropertyChangedEventHandler PropertyChanged; protected bool SetProperty<T>(ref T properValue, T newValue, string properName = null)
{
if (object.Equals(properValue, newValue))
return false;
properValue = newValue;
OnPropertyChanged(properName);
return true;
}
public void OnPropertyChanged(string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
} }
以上做了基类,数据类继承于它。
public class MyDataModel : BaseViewModel
使用时:
MyDataModel.value="Test";
MyDataModel.OnPropertyChanged(null);
即可.