【问题标题】:The name 'InitializeComponent' does not exist in the current context when creating new xaml file创建新的 xaml 文件时,当前上下文中不存在名称“InitializeComponent”
【发布时间】:2017-11-21 07:43:58
【问题描述】:

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

这并不能真正解决问题,因为我知道我应该这样做。任何帮助或建议都会是巨大的,我一直在努力解决这个问题。

【问题讨论】:

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


    【解决方案1】:

    当您在 XAML 中创建新控件或页面时,还会在后台生成一个隐藏的部分类文件,其中包含您的 InitializeComponent() 方法。对于名为LoginPage 的页面,后面生成的代码将称为LoginPage.g.i.cs,它应该驻留在obj 文件夹下的文件夹结构中。

    您的 XAML 行

    xmlns:local="using:BeneFit.Pages"
    

    看起来有点时髦,我会把它改成

    xmlns:local="clr-namespace:BeneFit.Pages"
    

    【讨论】:

    • 好的,我找到了LoginPage.g.cs,这是唯一的其他文件。我仍然不明白为什么 InitializeComponent() 方法仍然不存在。我是 c# 新手,所以我还在学习这些概念
    • @DallasPhillips 如果您在文件系统上移动文件或在创建文件后更改命名空间,通常会发生此特定问题。
    • 我从未移动/重命名文件。我展示的代码来自新文件。我应该删除它们并创建新的吗?
    • @Dallas 重新创建它们不会出错。还要检查您的 /obj 文件夹是否不受源代码控制或只读,并确保您测试我提到的命名空间更改。
    【解决方案2】:

    转到每个项目文件夹(共享、.Android、.ios 等)并删除 obj 和 bin 文件夹(这将删除隐藏的部分 .g 文件)

    重建解决方案。

    【讨论】:

      【解决方案3】:

      要完成三项检查:

      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 - 右键单击​​项目 - 卸载项目,然后重新加载项目。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-10-19
          • 2016-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-03
          • 2023-03-20
          • 1970-01-01
          相关资源
          最近更新 更多