在我的Xamarin.Forms应用程序中,我有1页,并且正在xaml中设置视图模型,如下所示:
<ContentPage.BindingContext>
<vm:MainViewModel />
</ContentPage.BindingContext>
问题是,当我将应用程序置于后台并再次打开时,我有2个MainViewModel
实例。我可以在调试器中看到已经创建了一个新代码,但是仍然从事件处理程序中调用了第一个代码(在将其放入后台之前)。
我该如何解决?是否可以保留和使用相同的视图模型?还是我每次关闭并重新打开应用程序时都被迫拥有一个新的?如果是这样,如何确定旧的已从内存中释放?
我正在Android设备上运行该应用程序。
答案 0 :(得分:2)
这听起来像是回归错误,因为它已被多次报告/修复。
我在SO上有一个类似的线程:Xamarin.Forms ViewModelLocator get called twice
除非它是一页应用程序,否则请不要在BindingContext
中设置XAML
,而应考虑使用IoC容器。