WPF页面刷新
阅读原文时间:2023年07月08日阅读:1

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

即可.