2017-12-27 19 views

答えて

0

私はXamarinはないと思います。フォームは2つのマスターページ(引き出し)をサポートしますが、画面内にTranslationXWidthに設定されたビューをページ内に追加してから、ToolbarItemこれを押すと、ビューのXが0に変換され、もう一度押すとビューが再び画面の幅に変換されます。唯一の欠点は、このビューがAppBarの下にあることです(写真のように、通知パネルがAppBarとStatusBarの前にないことです)。

通知パネル部:

// I think 260 is a good width (but I didn't test), experiment and see 
var notificationsPanel = new StackLayout { WidthRequest = 260 }; 

// Needed because we don't know the Width yet 
SizeChanged += (sender, e) => 
{ 
    if(Width > 0) 
     notificationsPanel.TranslationX = Width; 
} 

Widthプロパティは、ページの幅である

コードは次のようなものになるだろう。


ToolbarItemパーツ:

if(notificationsPanel.TranslationX > 0) 
    notificationsPanel.TranslateTo(Width - notificationsPanel.Width); 
else 
    notificationsPanel.TranslateTo(Width); // Here the Width will already be set 

ページの内容:

Content = new Grid 
{ 
    Children = 
    { 
     actualContent, 
     notificationsPanel 
    } 
} 

はそれが役に立てば幸い!


EDIT

簡単にアイデアが通知パネルなしで、あなたのページを作成し、このライブラリを使用することです:ポップアップとしての代わりに、ページ内のビューとしてNotificationsPanelを追加するRg.Plugins.Popupを。

このライブラリのwikiページはWikiです。ポップアップのXAMLページを作成し、クリックしたときにポップアップが表示されているかどうかをチェックする単純なメソッドを呼び出す「ルート」ページにToolbarItemを追加できます。そうでない場合は追加します。トグルのような方法)。このような何か:

if (PopupNavigation.PopupStack.Count > 0) 
    PopupNavigation.PopAsync(); 
else 
    PopupNavigation.PushAsync(new NotificationsPanel()); 

あなたがToolbarItemを追加する方法がわからない場合、それはこのようなものです:あなたがXamarin.Formsの画像についての詳細をお知りになりたい場合は

ToolbarItems.Add(new ToolbarItem 
{ 
    Text = "Notifications", 
    Icon = "notifications-icon.png" // change this based on your image requirements, Xamarin.Forms has more than one way to store images 
    Command = new Command(() => 
    { 
     if (PopupNavigation.PopupStack.Count > 0) 
      PopupNavigation.PopAsync(); 
     else 
      PopupNavigation.PushAsync(new NotificationsPanel()); 
    }) 
}); 

Working with Images

それだけです。アニメーションを追加するには(NotificationsPanelを画面の右側から作成する)、NotificationsPanel PopupPageで作成する場合は、ビューを右揃えにし、WidthRequestを画面の幅より小さくする必要があります。

希望すると助かります!

+0

私はこれについて全く新しいので、私は何をする必要があるのか​​分かりません。これらのコードはすべて、InitializeComponent()メソッドの下の.xaml.csファイルに格納されていますか? – Scar

+0

いいえ、私はXAMLの代わりにC#を書く方が好きです。もっとシンプルだと思います。これをXAMLで使用するには、XAMLでルートレイアウトを作成する必要があります(単純なグリッドでも可能です)。実際のXAMLを内容として追加し、コードにnotificationsLayoutをルートビューに追加する必要があります。私はすぐに説明することができません、明日私は詳細な説明で私の答えを更新します:) –

+0

私の新しい編集を参照してください、最終結果ははるかに良いと簡単に実装する。 –

関連する問題