2017-12-26 15 views
2

私はxamarinフォームアンドロイドとiosクロスプラットフォームアプリケーションをコーディングしています。私はそれを追加したいので、ボタンを押すと、別のページにナビゲートするボタン付きのハンバーガースライドアウトナビゲーションメニューが作成されます。私はチュートリアルを見てみましたが、彼らの誰も私がかなり簡単にxamarinを新しく作ったので作成できないように説明しました。xamarinフォームの作成方法クロスプラットフォームハンバーガースライドビュー

このチュートリアルでは、hereを試してみましたが、「メインページ」と「SearchPage」と「ProfilePage」という2つのページが既に存在するため、私はそれを取得できません。ページやものを失ってしまいます。

+0

非常に良い、簡単な公式ガイドがあります。あなたはそれを確認しましたか? https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/master-detail-page/ – EvZ

+0

@EvZ「Master = MasterPage;」というMainPageCSページを作成しようとすると、ラインには名前Masterが現在のコンテキストに存在しません –

+0

@Jacob独自のMasterPageを作成し、MasterPageItemとして詳細ページを配置する必要があります。 –

答えて

1

まあ、基本的に、あなたは両方である(それはAndroidとXamarin.Forms上MasterDrawerと呼ばれています)とContentView(それがXamarin.FormsにDetailと呼ばれています)「ビューをスライドさせ、」MasterDetailPageを持っています。これらのビューのそれぞれは、Xamarinのページです。

あなたはちょうどこのように、ページにこれらの二つの礼儀(マスターとディテール)を設定することにより、MasterDetailPageを作成することができます。

// MainPage here is the Propriety of the App class that controls the current displayed page 
MainPage = new MasterDetailPage 
{ 
    Master = new ContentPage { Content = new StackLayout { Children = { new Label { Text = "This is the Drawer Page!" } } } }, 
    Detail = new ContentPage { Content = new StackLayout { Children = { new Label { Text = "This is the Detail Page!" } } } } 
}; 

アプリクラスにこれを追加し、あなたが"This is the Drawer Page!"を言う引き出しを持っています"This is the Detail Page!"という詳細ページがあります。今

、あなたは、クラスでそれらContentPagesを分離し、このようなものになるだろうとします

public class MasterPage : ContentPage 
{ 
    public MasterPage() 
    { 
     Content = new StackLayout 
     { 
      Children = 
      { 
       new Label { Text = "This is the Master page!" } 
      } 
     } 
    } 
} 

public class DetailPage : ContentPage 
{ 
    public DetailPage() 
    { 
     Content = new StackLayout 
     { 
      Children = 
      { 
       new Label { Text = "This is the Detail page!" } 
      } 
     } 
    } 
} 

// And in the App constructor 
MainPage = new MasterDetailPage 
{ 
    Master = new MasterPage(), 
    Detail = new DetailPage() 
}; 

そして、それはそれだ...あなたはこのことについて、それ以上の質問は:)

気軽にお持ちの場合このコードは、アプリケーションクラスで使用することを意味している

編集コメント

た後、他のクラスはMainPage性質を持っていません。

あなたのメインページクラスは、あなただけのMasterDetailPageから(public class MainPage : MasterDetailPageを)MainPageを拡張して、ログイン後、代わりにナビゲーションでそれを押す、呼び出すことによって、あなたのメインページへのアプリケーションのMainPageを設定することができMasterDetailPageになりたい場合は、次の

App.Current.MainPage = new MainPage 
{ 
    Master = MasterPage(), 
    Detail = DetailPage() 
}; 
+0

私のアプリケーションが起動すると、ログインページに移動し、「MainPage」と呼ばれるクラスに移動します。メインページのコンストラクタにトップコードを追加しようとしましたが、エラーが発生します。 –

+0

私はまだこれを実装する方法を正確に混同しています。私はNavigationPagesとXamarinを初めて使用しました。 MasterPageDetailという名前のクラスを作成する必要があります。今すぐアプリケーションコンストラクタが実行されているときに、既にログインデータがあるかどうかをチェックします。メインページにNavigationPageを作成します。ログインページに移動します(LoginPageへのログイン後、MainPageへ移動します)。 "Home"(別名MainPage)と "Search" to SearchPage –

+0

私が言ったことを理解しよう。 MasterDetailPageには、DrawerのプロパティとContentのプロパティがあります。両方のプロパティのタイプはPageです。MasterDetailPageの 'Master'プロパティをDrawer(Slide-View)を表す' Page'に設定し、Detailプロパティをコンテンツを表すページに設定するだけです(普通ContentPageを持つNavigationPage) –

関連する問題