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,做两个修改:- 在根节点的命名空间里添加Popup的引用:
xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup" - 把根节点的
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>
- 在根节点的命名空间里添加Popup的引用:
- 打开
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
相关产品推荐
相关产品推荐

