C# BindableBase.SetProperty未更新UI
这真的很奇怪,但当我调用C# BindableBase.SetProperty未更新UI,c#,wpf,mvvm,prism,inotifypropertychanged,C#,Wpf,Mvvm,Prism,Inotifypropertychanged,这真的很奇怪,但当我调用BindableBase.SetProperty()时,UI并没有更新: 我正在使用Prism.Core.6.1.0\lib\net45\Prism.dll及其Version=6.1.0.0 但是,OnPropertyChanged(string propertyName)非常有效: public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string
BindableBase.SetProperty()
时,UI并没有更新:
我正在使用Prism.Core.6.1.0\lib\net45\Prism.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
事件。因此,删除这一行应该会有所帮助。这是因为person=value代码>指令BindableBase.SetProperty
检查两个参数之间是否相等,如果它们不相等,则仅引发PropertyChanged
事件。因此,删除这一行应该会有所帮助。SetProperty的工作方式是为您执行所有必需的更新逻辑。它将检查该值是否已更改,然后立即返回或更新该值(当该值通过ref
)并引发属性更改事件
您提前完成了一半的工作,因此它总是会立即返回,因为它会发现person
字段和值之间没有差异
只需将您的属性更改为:
public string Person
{
get { return person; }
set { SetProperty(ref person, value); }
}
SetProperty
的工作方式是为您执行所有必需的更新逻辑。它将检查该值是否已更改,然后立即返回或更新该值(当该值通过ref
)并引发属性更改事件
您提前完成了一半的工作,因此它总是会立即返回,因为它会发现person
字段和值之间没有差异
只需将您的属性更改为:
public string Person
{
get { return person; }
set { SetProperty(ref person, value); }
}
@downvoter你为什么不投票?@downvoter你为什么不投票?谢谢你的回答!这真的很酷,但Grx70是第一个,他回答得很好。我对你的努力投了赞成票。你的回答真的很好。谢谢你的回答!这真的很酷,但Grx70是第一个,他回答得很好。我对你的努力投了赞成票。你的回答很好。