簡體   English   中英

Xamarin 標簽頁 MVVM 在頁面之間傳遞數據

[英]Xamarin Tabbed Pages MVVM Passing Data Between Pages

我有一個名為“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 頁面上添加了一個帶有簡單名稱和描述的新項目。

當我單擊后退按鈕返回 TabPage1View 時,我想更新要在該頁面上顯示的項目列表。

我怎樣才能做到這一點?

首先,將 List 更改為 ObservableCollection。

ObservableCollection 自己實現了 OnPropertyChanged,這意味着當集合更新時接口也會更新。

但是您仍然需要在 TabPage1View 上重新加載您的模型(在添加項目並從 AddItemView 返回之后)。

您有兩個選擇:

首先也是最好的,實現一個 MessagingCenter。 在關閉 AddItemView 之前觸發一條消息,攔截 TabPage1View 中的消息,更新 Observable,您的屏幕也會更新。

其次,在 TabPage1View.PageAppearing 上做同樣的事情。

最后一個提示:有時您需要一個一個刪除集合中的項目,然后添加新項目以觸發 UI 刷新。

如果您用新的觀察者替換舊的觀察者,UI 可能不會刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM