我已经搜索了这个问题的答案了一段时间,所以我希望我的实例能够得到解决。我在visual studio 2015社区创建了一个新的Xamarin.Forms共享项目。我创建了一个新的xaml文件,并将其命名为 LoginPage ,并将其放在共享应用程序项目中名为Pages的文件夹中。添加Xamarin.Forms命名空间以识别 Page 并在 InitializeComponent 之前删除 this。之后我有:
using Xamarin.Forms;
namespace BeneFit.Pages
{
public sealed partial class LoginPage : Page
{
public LoginPage()
{
InitializeComponent(); //This has the red squiggly
}
}
}
这里的Xaml文件根本没有改变:
<Page
x:Class="BeneFit.Pages.LoginPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:BeneFit.Pages"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
</Grid>
</Page>
我注意到的一件事是构建操作需要 Page 我在这种情况下确定了。建议的快速修复方法是添加:
private void InitializeComponent()
{
throw new NotImplementedException();
}
并没有真正解决问题,因为我知道我应该这样做。任何帮助或建议都是巨大的,我一直试图解决这个问题。
答案 0 :(得分:1)
在XAML中创建新控件或页面时,还会在后台生成隐藏的分部类文件,这将保留您的InitializeComponent()
方法。对于名为LoginPage
的页面,后面生成的代码将被称为LoginPage.g.i.cs
,它应该驻留在obj
文件夹下的文件夹结构中。
您的XAML专线
xmlns:local="using:BeneFit.Pages"
确实看起来有点时髦,我会将其改为
xmlns:local="clr-namespace:BeneFit.Pages"
答案 1 :(得分:0)
转到每个项目文件夹(共享,.Android,.ios等)并删除obj和bin文件夹(这将删除隐藏的部分.g文件)
重建解决方案。
答案 2 :(得分:0)
要完成三项检查:
1 - 最新的Xamarin Forms nuget为所有平台安装了相同的版本
2 - 对于page.Xaml属性是:
Build Action: Embedded Resource
Copy to output dir: Do not copy
Custom tool (most common error when created page manually): MSBuild:UpdateDesignTimeXaml
对于page.cs属性是:
Build action: Compile
Copy to output dir: Do not copy
3 - 右键单击项目 - 卸载项目,然后重新加载项目。
答案 3 :(得分:0)