名称' InitializeComponent'在创建新的xaml文件时,当前上下文中不存在

时间:2016-01-27 23:32:28

标签: c# xaml xamarin visual-studio-2015 xamarin-forms

我已经搜索了这个问题的答案了一段时间,所以我希望我的实例能够得到解决。我在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();
    }

并没有真正解决问题,因为我知道我应该这样做。任何帮助或建议都是巨大的,我一直试图解决这个问题。

4 个答案:

答案 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)

看起来像UWP XAML而不是Xamarin Forms XAML。

你是否创造了错误的新事物?

您应该创建一个新的Xamarin.Forms内容页面

enter image description here