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

C# Xamarin表单:如何通知我以前的viewmodel,而不是需要修改的可观察集合?,c#,mvvm,xamarin,xamarin-forms,C#,Mvvm,Xamarin,Xamarin Forms,我使用一个带有selecteditem(name+detail)的可观察集合在我的导航中推送一个新的contentpage,在这个新页面中,我修改了这个选中项目的名称,但在另一个列表中 我想用另一个列表(保存在内部存储器中)刷新可观察集合中的数据 因此,在按下后退按钮之前,我是否可以使用事件通知先前的viewmodel?如果可能,我可以使用哪个事件 // // Summary: // When overridden, allows application dev

我使用一个带有selecteditem(name+detail)的可观察集合在我的导航中推送一个新的contentpage,在这个新页面中,我修改了这个选中项目的名称,但在另一个列表中

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

因此,在按下后退按钮之前,我是否可以使用事件通知先前的viewmodel?如果可能,我可以使用哪个事件

    //
    // 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();
这可能会有帮助,您需要在页面代码中覆盖它。

    //
    // 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();

这可能会有帮助,您需要在页面代码中覆盖它。

覆盖出现的
方法似乎是实现这一点的最简单方法。这样,您将保留刷新页面中属于需要刷新的viewmodel的数据的逻辑。当页面重新显示时,它可以触发ViewModel中的某些逻辑来刷新
ObservableCollection

另一个选项是使用Xamarin.Forms附带的
MessagingCenter
:这允许在组件之间进行pub/sub风格的消息传递,同时保持松散耦合。您可以拥有一个类,该类在中的列表更新时管理内部存储发布消息,并将其广播给订阅了这些更新的ViewModels


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

覆盖
OnAppearing
方法似乎是实现这一点的最简单方法。这样,您将保留刷新页面中属于需要刷新的viewmodel的数据的逻辑。当页面重新显示时,它可以触发ViewModel中的某些逻辑来刷新
ObservableCollection

另一个选项是使用Xamarin.Forms附带的
MessagingCenter
:这允许在组件之间进行pub/sub风格的消息传递,同时保持松散耦合。您可以拥有一个类,该类在中的列表更新时管理内部存储发布消息,并将其广播给订阅了这些更新的ViewModels

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