【发布时间】:2020-01-13 22:50:03
【问题描述】:
我有 2 个问题。
First=> 如何在 2 个 ViewModel 之间传递值?
例如,我正在添加数据并将其显示到 MainPAGE 中,同时我也想在 ChildPAGE 中显示相同的数据(Observable Collection)。在 ChildPAGE Xaml 中,我将 BindingContext 分配给 ViewModel,并将 listview 的数据源分配给该 Observable Collection。但我无法使其工作。我尝试了一些示例,但无法使其正常工作。如果在 ChildPAGE 的构造函数中加载数据,则它可以正常工作,否则将不起作用。我想,我会使用一个 ObservableCollection 来提高性能,但我认为,MVVM 中的机制是不同的。 那么如何在 2 页中使用一个 ObservableCollection。
Second => 如何在不使用构造函数的情况下在 ViewModel 之间传递数据。 示例:我有 2 个页面(MainPage 和 ChidPage)和 2 个 ViewModel(MainVM 和 ChildVM)。
Situation => 如果我将数据从 MainPage 传递到 ChildPage ,我会在构造函数中发送数据。但我想从 Childpage 获取数据到 MainPage 。所以 PopAsync 没有构造函数。我也尝试过 EventHandler 但它不起作用。
唯一的解决方案是消息中心吗?或者你对更好的表现有什么建议? MessagingCenter 是否还会因为 RAM 的高使用率而降低性能? 注意:(我想学习mvvm架构,所以不想用其他的MVVM框架,想全面了解MVVM和C#的概念。) 提前致谢
【问题讨论】:
-
通常,
await navService.PushAsync(new MyPage2(dataToShare));用于在页面/底层 VM 之间传递数据。在您的情况下,我将使用本地存储来缓存数据并将其加载到子/主页中。每次更新或删除时,缓存都会刷新。 -
如果您真的非常喜欢高性能关键应用程序,那么请远离 Xamarin 并使用 C++,否则这些问题是合理的,但也无关紧要。在一天结束时,Xamarin 的植入可能会发生变化,有些事情将来可能会更快,而有些可能会更慢。
-
帮自己一个忙,看看 Prism for Xamarin Forms。这将使您快速入门:xamgirl.com/prism-in-xamarin-forms-step-by-step-part-1
-
@除了messagecenter,可以看看FreshMvvm,MessageCenter确实会降低性能:betterask.erni/news-room/…