2016-05-01 63 views
9

私はXamarin.formsを使用していると私は、次の画像のようにポップアップ表示にログインフォームを持っている必要があります:xamarin.formsを使用してポップアップでフォームを作成するにはどうすればいいですか?

https://github.com/michaeled/FormsPopup/blob/master/pictures/androidPopup.gif?raw=true

今私はPushModalAsyncを使用していますが、これは新しいページを作りますフォームは私が望むようにポップアップビューを表示するのではなく、画面全体をカバーします。

xamarin.formsを使用してこれを行う方法はありますか?そうでない場合は、クロスプラットフォーム(Android、iOS、UWP)の代替手段は既に実装されていますか?

答えて

11

私の経験によれば、XLabsのPopupLayout doesn't work properly sometimesがあります。しかし、複雑なポップアップを作成することができる本当に素晴らしいライブラリがあります:Rg.Plugins.Popup。唯一の問題:UWPの実装がありません(ただし、それはgoing to be releasedです)。

+0

助けてくれてありがとうが、この場合はuwpの実装が必要です。 –

+1

[Rg.Plugins.Popup](https://github.com/rotorgames/Rg.Plugins.Popup) プレリリース(1.0.0-pre1)は既にWinPhoneとUWPをサポートしています。 ベータテストに参加することを喜んでお待ちしています。 – user1658602

4

XLabsには、これを行うために使用できるPopupLayoutがあります。

  var pop = new XLabs.Forms.Controls.PopupLayout(); 

      // PatientSearch is a ContentView I was to display in the popup 
      var search = new PatientSearch(data, this); 
      search.WidthRequest = 600; 
      search.HeightRequest = 500; 
      search.BackgroundColor = new Color (1, 1, 1, 0.8); 
      pop.ShowPopup(search); 
+0

ありがとうございます。残念ながら、NullReferenceException(https://github.com/XLabs/Xamarin-Forms-Labs/issues/1107#issuecomment-197701086)のエラーが表示されます。あなたはそれを解決する方法を知っていますか? –

0

私が使用している一般的な解決策は、これは、たとえば、内部のすべてのフォームでStackLayoutを作成し、それを現在使用しているページの子を挿入することで解決するために使用することです:

PopupPage popUp; //This will be the layout of the form 

Page : ContentPage { 

    var gird = new Gird(); 

    popUp = PopupPage(); 
    popUp.IsVisible = false; 

    var mainContainer = new StackLayout(); 

    mainContainer.Children.Add(All you UI stuff..); 

    var btn = new Button(); 
    btn.Clicked += OnButtonClicked; 

    grid.Children.Add(mainContainer,0,0); 
    grid.Children.Add(popUp,0,0); 

} 

So in order to show the popoUP you need to play with the IsVisible property, for example: 

void OnButtonClicked(){ 

    //You can center the popup using Vertical options or whatever you need 
    //and to resize the pop up you can do different calculations like 
    //popUp.Width = ScreenWidth/2 and popUp.Height = ScreenWidth/2 
    popUp.IsVisile = true; 

} 

そして、これはすべてのプラットフォームで動作し、唯一の欠点は、あなたが透明なレイアウトを持っていないということですが、そのためにあなたが使用することができます。

https://github.com/gaborv/xam-forms-transparent-modal

関連する問題