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 中打开通知

xamarin Forms Azure 通知中心

Xamarin.Forms - 适用于 iOS 和 Android 的推送通知

如何在 Xamarin Forms iOS 中的特定页面上导航?

Xamarin.Forms 如何将数据从 CollectionView 传输到不同的视图?

Xamarin Forms 如何制作可拖动的列表视图