我使用带有选择项(名称+详细信息)的可观察集合在我的导航中推送新的内容页面,在这个新页面中,我修改了所选项目的名称,但在另一个列表中。
我想用另一个列表刷新observable集合中的数据(保存在内部存储中)
那么,我可以使用一个事件来通知以前的视图模型,而不是按下后退按钮,是否可以使用哪个事件?
答案 0 :(得分:0)
<强> Xamarin.Forms.Page 强>
//
// Summary:
// When overridden, allows application developers to customize behavior immediately
// prior to the Xamarin.Forms.Page becoming visible.
//
// Remarks:
// To be added.
protected virtual void OnAppearing();
这可能会有所帮助,您需要在页面代码中覆盖它。
答案 1 :(得分:0)
覆盖OnAppearing
方法似乎是实现这一目标的最简单方法。这样,您将保留逻辑以刷新属于需要刷新的viewmodel的页面中的数据。当页面重新出现时,它可以触发ViewModel中的某些逻辑来刷新ObservableCollection
。
另一种选择是使用Xamarin.Forms附带的MessagingCenter
:https://developer.xamarin.com/guides/xamarin-forms/messaging-center/这允许组件之间的pub / sub样式消息传递,同时保持松散耦合。每当更新中的列表更新时,您都可以拥有管理内部存储发布消息的类,并将其广播到已订阅这些更新的ViewModel。
在这种特殊情况下,覆盖OnAppearing
似乎是最简单的解决方案。