Xamarin Forms:如何通知我以前的视图模型而不是需要修改可观察集合?
Posted
技术标签:
【中文标题】Xamarin Forms:如何通知我以前的视图模型而不是需要修改可观察集合?【英文标题】:Xamarin Forms: How notify my previous viewmodel than is observable collection need to be modified? 【发布时间】:2016-06-25 00:55:59 【问题描述】:我使用带有选定项(名称+详细信息)的可观察集合在我的导航中推送一个新的内容页面,在这个新页面中我修改了这个选定项的名称,但在另一个列表中。
我想用这个其他列表(保存在内部存储中)刷新可观察集合中的数据
那么,我可以使用事件来通知前一个视图模型而不是按下后退按钮吗?如果可能的话,我可以使用哪个事件?
【问题讨论】:
【参考方案1】: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();
这可能会有所帮助,您需要在页面代码中覆盖它。
【讨论】:
【参考方案2】:覆盖OnAppearing
方法似乎是实现这一目标的最简单方法。这样,您将保留刷新页面中属于需要刷新的视图模型的数据的逻辑。当页面重新出现时,可以触发ViewModel中的一些逻辑刷新ObservableCollection
。
另一个选项是使用 Xamarin.Forms 附带的 MessagingCenter
:https://developer.xamarin.com/guides/xamarin-forms/messaging-center/ 这允许组件之间的发布/订阅样式消息传递,同时保持松散耦合。您可以让管理内部存储的类在更新列表时发布消息,并将其广播到已订阅这些更新的 ViewModel。
在这种特殊情况下,覆盖 OnAppearing
似乎是最简单的解决方案。
【讨论】:
以上是关于Xamarin Forms:如何通知我以前的视图模型而不是需要修改可观察集合?的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms - 适用于 iOS 和 Android 的推送通知
如何在 Xamarin Forms iOS 中的特定页面上导航?