2017-03-07 22 views
1

我一直在玩我喜歡的Exrin Xamarin Forms框架。Xamarin Forms Exrin Framework將容器推送爲Modal?

我已經到了一個阻擋者,我想推一個容器作爲模態。任何人都知道如何做到這一點的任何提示?我無法找到任何示例,或者有關如何將容器推入Modal的最佳方法。

望着Exrin碼,可能需要更改BaseStack.cs,創建一個NavigationModalResultType,生活方式,因此它不會在存儲容器等已經影響...?

還有其他想法嗎?

回答

0

Exrin及其Stacks背後的想法是不需要Modal。 Modals的唯一原因是,對於一個頁面,您不能只是從現有頁面的頂部按回來。

這裏推薦的方法是創建一個新的堆棧並導航到那個。然後在完成後返回到前一個堆棧。它的行爲方式與Modal相同,但您不需要實際使用Modal。

更新

如果你必須有一個模式,而其他的方式來支持過渡開始發揮作用,你可以修改你NavigationProxy。替換下面的2個函數。

public async Task PopAsync() 
    { 
     if (_page.Navigation.ModalStack.Count > 0) 
     { 
      var page = _page.Navigation.ModalStack[0]; 
      _page_Popped(null, new NavigationEventArgs(page)); 
      await _page.Navigation.PopModalAsync(); 

     } 
     else 
      await _page.PopAsync(); 
    } 

    public async Task PushAsync(object page) 
    { 
     var xamarinPage = page as Page; 

     if (xamarinPage == null) 
      throw new Exception("PushAsync can not push a non Xamarin Page"); 

     if (page is ExrinSample.View.AboutView) 
      await _page.Navigation.PushModalAsync(xamarinPage); 
     else 
      await _page.PushAsync(xamarinPage); 
    } 

當然這是手動引用您的代理中的特定頁面。如果你想清理它,你可以在你的堆棧中添加一些方法來列出模態的頁面,並根據需要使用該列表推送到模態,而不是直接將頁面名稱放在代理中。

+0

好吧,有趣。我會給你一些我想要做的背景。我有一個TabbedPage,其中一個Tabs有一個浮動操作按鈕。當點擊該按鈕時,我需要一個頁面模式(或堆棧,只需要一個視圖),彈出並獲取整個屏幕(即隱藏標籤,導航,所有內容)......然後彈出完成後... – dimoss

+0

一個新的堆棧,映射一個頁面,將是實現這一目標的途徑。然後導航到該堆棧。也許我還需要研究如何使這些類型的場景變得更快更容易。 –

+0

很酷的工作。但我真的需要一個模態動畫。你知道我可以做到的任何方式,即使我甩Exrin嗎? – dimoss