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> 

在TabContierPageViewModel中,我有一个TabbedPage1ViewModel的属性,名为"tabbedPage1View Model">

public TabbedPage1ViewModel tabbedPage1ViewModel  { get; set; }
public TabContainerPageViewModel()
{
tabbedPage1ViewModel = new TabbedPage1ViewModel ();
}

在选项卡Page1ViewModel中,我有一个项目列表

private List<Items> _items;
public List<Items> items
{
get
{
return _items;
}
set
{
_items = value;
OnPropertyChanged();
}
}

从TabPage1View,我导航到另一个名为"AddItemView"的页面

顾名思义,我在AddItemView页面上添加了一个具有简单名称和描述的新项。

当我单击后退按钮返回TabPage1View时,我想更新要在该页面上显示的项目列表。

我怎样才能做到这一点?

首先,将List更改为ObservableCollection。

ObservableCollection自己实现了OnPropertyChanged,这意味着接口将在集合更新时更新。

但您仍然需要在TabPage1View上重新加载您的模型(在添加项目并从AddItemView返回后(。

你有两个选择:

首先也是最好的一点是,实施MessagingCenter。在关闭AddItemView之前激发一条消息,在TabPage1View中截取消息,更新Observable,屏幕也会更新。

其次,在选项卡Page1View.PageAppearing.中执行相同操作

最后一个提示:有时您需要逐个删除集合中的项,然后添加新项来触发UI刷新。

如果用新的Observiel替换旧的Observel,UI可能不会刷新。

相关内容

  • 没有找到相关文章

最新更新