这取决于你,他们都可以达到效果。
但是如果要减少程序的CPU消耗,那么onAppearing
刷新页面数据的方法就不要使用太多了。
另一种方法是可以通过Delegate / Event / MessageCenter更改模型的数据。
您可以参考此讨论以了解如何使用Delegate/Event/MessageCenter。
在这里,我将通过使用MessageCenter来实现该示例。
例如,TestViewModel如下:
public class TestViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private string pagetitle;
public string PageTitle
{
get
{
return pagetitle;
}
set
{
if (pagetitle != value)
{
pagetitle = value;
NotifyPropertyChanged();
}
}
}
}
然后在FirstPage中绑定如下,在里面订阅MessageCenter:
TestViewModel testViewModel = new TestViewModel();
BindingContext = testViewModel;
MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
testViewModel.PageTitle = "Modified Title";
});
然后在SecondPage 中,通过发送消息更改数据时。返回FirstPage时,视图将被更新。
private void Button_Clicked(object sender, EventArgs e)
{
MessagingCenter.Send<object>(this, "Hi");
}