You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2017中无法为Xamarin.Forms项目添加PopupPage的问题

解决Rg.Plugins.Popup在VS2017中无法创建PopupPage的问题

嘿,我之前也碰到过一模一样的情况,给你梳理几个关键的解决步骤,帮你搞定这个问题:

1. 确保插件安装完整

首先确认你已经通过NuGet把Rg.Plugins.Popup包安装到了所有项目里(包括共享项目、Android、iOS等平台项目),这个插件需要各平台都完成初始化才能正常工作。

2. 手动创建PopupPage(关键:同时修改XAML和代码文件)

VS2017默认没有内置PopupPage的模板,所以得手动改造ContentPage,核心是同时修改XAML和对应的CS文件,不然就会出现你遇到的分部类基类不一致的错误:

  • 先添加一个常规的ContentPage,命名为CustomPopupPage
  • 打开CustomPopupPage.xaml,做两个修改:
    1. 在根节点的命名空间里添加Popup的引用:
      xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
      
    2. 把根节点的ContentPage替换成pages:PopupPage,修改后的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"
                       x:Class="YourProjectName.CustomPopupPage">
          <!-- 你的弹窗内容 -->
      </pages:PopupPage>
      
  • 打开CustomPopupPage.xaml.cs,修改基类并添加命名空间引用:
    using Rg.Plugins.Popup.Pages;
    using Xamarin.Forms.Xaml;
    
    namespace YourProjectName
    {
        [XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class CustomPopupPage : PopupPage
        {
            public CustomPopupPage()
            {
                InitializeComponent();
            }
        }
    }
    

3. 完成插件的平台初始化

这一步很容易被忽略,必须在各平台的启动代码里初始化插件:

  • 共享项目(App.xaml.cs):在构造函数里添加:
    Rg.Plugins.Popup.Popup.Init();
    
  • Android项目(MainActivity.cs):在LoadApplication(new App());之前添加:
    Rg.Plugins.Popup.Popup.Init(this);
    
  • iOS项目(AppDelegate.cs):在LoadApplication(new App());之前添加:
    Rg.Plugins.Popup.Popup.Init();
    

4. 清理并重新编译

如果做完以上步骤还报错,建议清理解决方案,删除所有项目的bin和obj文件夹,然后重新编译,这样可以清除自动生成文件的缓存,避免残留的旧代码导致冲突。

为什么你之前改CS文件会报错?因为XAML文件里的根节点还是ContentPage,编译时自动生成的CustomPopupPage.xaml.g.cs文件里的分部类基类还是ContentPage,和你手动修改的CS文件里的PopupPage不一致,所以必须同步修改XAML的根节点,自动生成的文件才会跟着更新基类。

内容的提问来源于stack exchange,提问作者Adam Mrozek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:01:11