Невозможно добавить PopupPage для проекта в Visual Studio - PullRequest
0 голосов
/ 19 сентября 2019

Я хотел бы использовать Rg.Plugins.Popup для Xamarin.Forms, но, к сожалению, я не могу добавить PopupPage в проект.Я использую VIsual Studio 2017. В окне AddNewItem вообще нет PopupPage.

Я пытался добавить ContentPage вместо этого, как это:

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

, но всякий раз, когда я пытаюсь изменить тип ContentPage на PopupPage, я получаю следующую ошибку: Partial declarations of 'CustomPopupPage' must not specify different base classes.

Проблема в том, что второй частичный класс находится в автоматически сгенерированном файле CustomPopupPage.xaml.g.cs, и я не могу изменить этот файл, потому что каждый раз, когда приложение компилирует, он перезаписывает этот файл.

Я думаю, что упускаю что-то очевидноездесь, потому что демо работает нормально.

1 Ответ

3 голосов
/ 19 сентября 2019

PopupPage является подклассом ContentPage. Так что вам нужно добавить новый ContentPage и изменить суперкласс как в xaml, так и в коде benind.

Во-первых, установить пакет Rg.Plugins.Popup из nuget в общем проекте и конкретной платформе (iOS и Android).

Плагин требует инициализации.Чтобы использовать PopupPage внутри приложения, каждое приложение платформы должно инициализировать Rg.Plugins.Popup.Этот шаг инициализации варьируется от платформы к платформе и обсуждается в следующих разделах.

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>

в коде

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

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

Обновление

Кажется, существует существующая проблема vs 2017 года, на VS 2019 он работает нормально.И я опубликую эту проблему для продуктовых команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...