BindableBase.SetProperty is not updating UI



这真的很奇怪,但当我调用BindableBase.SetProperty():时,UI没有更新

private string person;
public string Person
{
    get { return person; }
    set
    {
        person = value;
        SetProperty(ref this.person, value);//Not updating UI
        //OnPropertyChanged("Person");//It works really nice
    }
}

我使用的是Prism.Core.6.1.0libnet45Prism.dll和它的Version=6.1.0.0

然而,OnPropertyChanged(string propertyName)完美地工作:

public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

我缺少什么?如有任何帮助,我们将不胜感激!:)

这是因为person = value;指令。BindableBase.SetProperty检查两个参数之间的相等性,只有当它们不相等时才会引发PropertyChanged事件。因此,删除这条线应该会有所帮助。

SetProperty的工作方式是为您执行所有必需的更新逻辑。它将检查值是否已更改,然后立即返回或更新值(可以这样做,因为它是由ref传递的),然后引发属性更改事件。

您提前完成了一半的工作,因此它将始终立即返回,因为它不会发现person字段和value之间有任何差异。

只需将您的财产更改为:

public string Person
{
    get { return person; }
    set { SetProperty(ref person, value); }
}

相关内容

  • 没有找到相关文章

最新更新