Xamarin表单:如何通知我之前的viewmodel而不是可观察的集合需要修改?

时间:2016-03-10 09:16:11

标签: c# mvvm xamarin xamarin-forms

我使用带有选择项(名称+详细信息)的可观察集合在我的导航中推送新的内容页面,在这个新页面中,我修改了所选项目的名称,但在另一个列表中。

我想用另一个列表刷新observable集合中的数据(保存在内部存储中)

那么,我可以使用一个事件来通知以前的视图模型,而不是按下后退按钮,是否可以使用哪个事件?

2 个答案:

答案 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附带的MessagingCenterhttps://developer.xamarin.com/guides/xamarin-forms/messaging-center/这允许组件之间的pub / sub样式消息传递,同时保持松散耦合。每当更新中的列表更新时,您都可以拥有管理内部存储发布消息的类,并将其广播到已订阅这些更新的ViewModel。

在这种特殊情况下,覆盖OnAppearing似乎是最简单的解决方案。