2017-01-15 8 views
0

私はサンプルのマスターを実行すると、私のUWPの対象は、Windows 10Xamarin.Formsプリズムアプリ表示されない主従ナビゲーションバー

上で実行されていると私のXamarin.Formsアプリで構成されたマスター・ディテール・ナビゲーションを取得しようとしています-detail(https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/次)Xamarinが提供するアプリ、およびポップオーバーにMasterBehaviorを変更、私は次の動作を参照してください。

スタートアップ:

enter image description here

ハンバーガーのアイコンを選択します。

enter image description here

選択してください:私のプリズムアプリで

enter image description here

を、私はメインページ/ View1をに移動します。

protected override void OnInitialized() 
{ 
    InitializeComponent(); 
    var task = NavigationService.NavigateAsync("MainPage/View1"); 
    ... 
} 

メインページはMasterBehaviorがに設定されて私のMasterDetailPageですPopover、そしてView1はContentPageです。

メインページ:

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        xmlns:views="clr-namespace:My.Mobile.Application.Views;assembly=My.Mobile.Application" 
        x:Class="My.Mobile.Application.Frame.MainPage" 
        MasterBehavior="Popover"> 
    <MasterDetailPage.Master> 
    <views:MasterPage x:Name="masterPage" /> 
    </MasterDetailPage.Master> 
    <MasterDetailPage.Detail> 
    <NavigationPage> 
     <x:Arguments> 
     <views:View1 /> 
     </x:Arguments> 
    </NavigationPage> 
    </MasterDetailPage.Detail> 
</MasterDetailPage> 

View1を:

public View1() 
{ 
    NavigationPage.SetHasNavigationBar(this,false); 
    InitializeComponent(); 
} 

起動時に、私は、任意のナビゲーションバー、View1を(現在はちょうど赤画面)の内容のみが表示されませんenter image description here

MainPage.xamlのMasterBehaviorをDefaに変更するとULTの代わりに、ポップオーバー、及びアプリが起動したときに、私はサイドメニューを参照してください、View1をしてSetHasNavigationBarを削除します。

をメインページ:

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        xmlns:views="clr-namespace:My.Mobile.Application.Views;assembly=My.Mobile.Application" 
        x:Class="My.Mobile.Application.Frame.MainPage" 
        MasterBehavior="Default"> 
    <MasterDetailPage.Master> 
    <views:MasterPage x:Name="masterPage" /> 
    </MasterDetailPage.Master> 
    <MasterDetailPage.Detail> 
    <NavigationPage> 
     <x:Arguments> 
     <views:View1 /> 
     </x:Arguments> 
    </NavigationPage> 
    </MasterDetailPage.Detail> 
</MasterDetailPage> 

View1を:

public View1() 
{ 
    //NavigationPage.SetHasNavigationBar(this,false); 
    InitializeComponent(); 
} 

enter image description here

MasterBehaviorをDefaultに設定してスタートアップ後に選択を行うと、ハンバーガーメニューが表示されます。

enter image description here

は、私が追加またはポップアップするように設定MasterBehaviorとXamarinのサンプル動作を模倣するために私の溶液中で確認することができるものはありますか?

答えて

3

問題はここにある:var task = NavigationService.NavigateAsync("MainPage/View1");

あなたはハンバーガーメニューを表示したいので、あなたがNavigationPageにあなたの詳細をラップする必要があります。

var task = NavigationService.NavigateAsync("MainPage/NavigationPage/View1");

また、あなたはナビゲーションサービスので、あなたのマスターページXAMLで詳しくマークアップを削除することができます。だから、まずあなたのナビゲーションパスに追加し

Container.RegisterTypeForNavigation<NavigationPage>();

ナビゲーション

ためNavigationPageを登録あなたのためにそれを構築します。

0

はこのような何かを試してみてください。

public partial class ShellView : MasterDetailPage, IMasterDetailPageOptions 
{ 
    public ShellView() 
    { 
     InitializeComponent(); 
    } 

    public bool IsPresentedAfterNavigation 
    { 
     get { return Device.Idiom != TargetIdiom.Phone; } 
    } 
} 
関連する問題