如何解决Xamarin选项卡式页面MVVM在页面之间传递数据
我有一个名为“ TabContainerPage”的TabbedPage,它是两个ContentPage的容器。
<TabbedPage.Children>
<me:TabbedPage1View Title="Tabbed Page 1" BindingContext="{Binding tabbedPage1ViewModel}" WidthRequest="400"/>
<me:TabbedPage2View Title="Tabbed Page 2"/>
</TabbedPage.Children>
在TabContaierPageViewModel中,我对TabbedPage1ViewModel拥有一个名为“ tabbedPage1ViewModel”的属性
public TabbedPage1ViewModel tabbedPage1ViewModel { get; set; }
public TabContainerPageViewModel()
{
tabbedPage1ViewModel = new TabbedPage1ViewModel ();
}
在TabPage1ViewModel中,我有一个项目列表
private List<Items> _items;
public List<Items> items
{
get
{
return _items;
}
set
{
_items = value;
OnPropertyChanged();
}
}
从TabPage1View中,我导航到另一个名为“ AddItemView”的页面。
顾名思义,我在AddItemView页面上添加了一个带有简单名称和说明的新Item。
当我单击“后退”按钮返回TabPage1View时,我想更新要在该页面上显示的项目列表。
我该怎么做?
解决方法
首先,将List更改为ObservableCollection。
ObservableCollection本身实现了OnPropertyChanged,这意味着接口将在集合更新时更新。
但是您仍然需要在TabPage1View上重新加载模型(添加项目并从AddItemView返回后)。
您有两个选择:
首先,最好是实施一个MessagingCenter。在关闭AddItemView之前触发消息,在TabPage1View中拦截消息,更新Observable,屏幕也会随之更新。
第二,在TabPage1View.PageAppearing上执行相同的操作。
最后一个提示:有时您需要一个一个地删除集合中的项目,然后添加新项目以触发UI刷新。
如果将旧的Observabel换成新的Observabel,则UI可能不会刷新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。