【发布时间】:2023-03-04 04:08:01
【问题描述】:
在 Prism MVVM 框架中处理计算属性的最佳方法是什么?我在虚拟机上有一个Xamarin.Forms 应用程序,它具有以下属性:
private string _title;
public string Title
{
get { return _title; }
set
{
SetProperty(ref _title, value);
OnPropertyChanged(() => Message);
}
}
private string _name = "John";
public string Name
{
get { return _name; }
set
{
SetProperty(ref _name, value);
OnPropertyChanged(() => Message);
}
}
public string Message
{
get { return String.Format("{0},{1}", Name, Title); }
}
代码运行良好。但是,Prism 库在 OnPropertyChanged 语句中警告我使用 RaisePropertyChanged,这将避免使用魔术字符串,并且带有表达式的 OnPropertyChanged 效率较低。
是否有其他方法可以在名称或标题更改时通知视图重新读取“消息”?
这让我想到,也许 Prism 有一种设置方法,这样“名称”和“标题”就不必知道 Message 以更新 Message。如果可能的话,这将是可取的。执行计算属性的“棱镜”方式是什么?我在他们的 Xamarin.Forms 文档中找不到任何示例。
【问题讨论】:
-
SetProperty(ref _name, value);行以及所有视图模型都继承自BindableBase(INotifyPropertyChanged的实现)的事实已经在您更新这些属性时更新了 UI。您永远不必显式调用RaisePropertyChanged或OnPropertyChanged。因此,您需要让您的消息像 Name 一样成为属性。
标签: mvvm xamarin.forms prism