简体   繁体   中英

Unable to add PopupPage to project in Visual Studio

I would like to use Rg.Plugins.Popup for Xamarin.Forms but unfortunately I cannot add PopupPage to the project. I am using VIsual Studio 2017. In AddNewItem window there is no PopupPage at all.

I tried to add ContentPage instead like this:

public partial class CustomPopupPage : ContentPage
{
    public CustomPopupPage ()
    {
        InitializeComponent ();
    }
}

but whenever i try to change type ContentPage to PopupPage I get following error: Partial declarations of 'CustomPopupPage' must not specify different base classes.

The problem is that second partial class is in auto-generated file CustomPopupPage.xaml.g.cs and I cannot modify that file because each time application is compiling it rewrites that file.

I think I am missing something obvious here because demo is working fine.

PopupPage is a subclass of ContentPage.So you have to add a new ContentPage and change the superclass both in xaml and code benind.

Firstly, install the package Rg.Plugins.Popup from nuget in share project and specific platform (iOS and Android).

The plugin requires to be initialized. To use a PopupPage inside an application, each platform application must initialize the Rg.Plugins.Popup. This initialization step varies from platform to platform and is discussed in the following sections.

iOS ->AppDelegate.cs

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
   Rg.Plugins.Popup.Popup.Init();

   global::Xamarin.Forms.Forms.Init ();
   LoadApplication (new App ());
   return base.FinishedLaunching (app, options);
}

Android->MainActivity

protected override void OnCreate(Bundle bundle)
{
   base.OnCreate(bundle);

   Rg.Plugins.Popup.Popup.Init(this, bundle);

   Xamarin.Forms.Forms.Init(this, bundle);
   LoadApplication (new App ());
}

xaml

<?xml version="1.0" encoding="utf-8" ?>
<pages:PopupPage 
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
    xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup"
    x:Class="MyProject.MyPopupPage">
    <!--You can set an animation in the xaml file or in the csharp code behind-->
    <pages:PopupPage.Animation>
        <animations:ScaleAnimation 
            PositionIn="Center"
            PositionOut="Center"
            ScaleIn="1.2"
            ScaleOut="0.8"
            DurationIn="400"
            DurationOut="300"
            EasingIn="SinOut"
            EasingOut="SinIn"
            HasBackgroundAnimation="True"/>
    </pages:PopupPage.Animation>
    <!--You can use any elements here which are extended from Xamarin.Forms.View-->
    <StackLayout 
        VerticalOptions="Center" 
        HorizontalOptions="Center" 
        Padding="20, 20, 20, 20">
        <Label
            Text="Test"/>
    </StackLayout>
</pages:PopupPage>

in code behind

public partial class MyPopupPage : Rg.Plugins.Popup.Pages.PopupPage
{
  public MyPopupPage()
  {
    InitializeComponent();
  }

  protected override void OnAppearing()
  {
    base.OnAppearing();
  }
}

Update

It seems an existing issue of vs 2017, on VS 2019 it works fine. And I will post this issue to product teams.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM