2016-11-22 58 views
0

我有一個應用程序使用主詳細信息頁面和其中的導航頁面。在Android上,當您通過漢堡菜單導航到帳戶頁面時,導航欄會按預期保持在屏幕的頂部,以便您可以使用它進行導航。在iOS上,導航欄消失,所以我創建了一個帶有漢堡菜單圖標的自定義欄。當有人點擊自定義導航欄上的圖標時,我想讓漢堡菜單從左側滑出。使用Xamarin表單 - 如何將按鈕點擊到滑動手勢?

我已經給漢堡圖標附加了一個手勢識別器,但我不知道要在被調用的方法中放置什麼以使其執行滑動操作。

第二頁上

導航欄:

<StackLayout IsVisible="{Binding _isiPhone}" Orientation="Horizontal" BackgroundColor="#008334"> 
    <Image Source="burger.png" HorizontalOptions="StartAndExpand"> 
     <Image.GestureRecognizers> 
      <TapGestureRecognizer Tapped="Burger_Clicked"></TapGestureRecognizer> 
     </Image.GestureRecognizers> 
    </Image> 
</StackLayout> 

事件處理程序:

private void Burger_Clicked(object sender, EventArgs e) 
{ 
} 

Android設備上查看:

android view

安卓漢堡菜單視圖:

android burger menu

的iOS預覽(自定義導航欄):

iOS view

的iOS漢堡菜單:

iOS burger menu

回答

0

您可以設置 「IsPresented」 屬性MasterDetail頁面上真/假使側面菜單顯示/隱藏。 請重新考慮是否真的需要自定義欄,因爲標準控件應該是用戶習慣的東西。

另請注意,建議您爲主頁面使用內容頁面,並且您可以根據需要使用NavigationPage/TabPage/ContentPage作爲詳細信息頁面。

參考official docs瞭解更多信息

+0

對不起,內頁是一個內容頁沒有導航頁面。 我不知道如何從帳戶頁面訪問IsPresented屬性? – NinjaFocks

+0

您可以將Application.Current.MainPage強制轉換爲MasterDetailPage。所以像((MasterDetailPage)Application.Current.MainPage).IsPresented = true;應顯示滑出抽屜。 當然,如果您的MasterDetailPage始終位於您的應用程序的根目錄下,那麼您應該只使用這種方法。您可能需要測試它,或以不同的方式存儲參考,無論適合您的項目,並且是您應用程序體系結構中最乾淨和最簡單的解決方案。 – irreal