Xamarin.Forms - 创建新页面时不存在InitializeComponent

use*_*962 64 xamarin xamarin.forms

我正在使用Visual Studio来试用Xamarin.Forms.我正在尝试遵循指南:http: //developer.xamarin.com/guides/cross-platform/xamarin-forms/xaml-for-xamarin-forms/getting_started_with_xaml/

简而言之,我使用PCL创建了一个Xamarin.Forms解决方案,然后尝试将其添加Forms XAML Page到PCL项目中.

创建的代码隐藏看起来像这样:

    public partial class Page1 : ContentPage
    {
        public Page1()
        {
            InitializeComponent(); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

这里的问题InitializeComponent();是红色.当我尝试建立时,我得到了通知The name 'InitializeComponent' does not exist in the current context

我一直在寻找解决方案,即使其他人遇到同样的麻烦,他们的解决方案也不适合我.以下是我尝试使用的一条建议:http: //blog.falafel.com/xamarin-error-initializecomponent-does-not-exist-in-the-current-context/

如果您有解决此问题的方法,请告诉我.谢谢!

更新:

我的PCL(我也想添加我的XAML页面)包含:

App.cs:

    public class App : Application
    {
        public App()
        {
            // The root page of your application
            MainPage = new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children = {
                        new Label {
                            XAlign = TextAlignment.Center,
                            Text = "Welcome to Xamarin Forms!"
                        }
                    }
                }
            };
        }

        protected override void OnStart()
        {
            // Handle when your app starts
        }

        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
Run Code Online (Sandbox Code Playgroud)

和我的XAML页面:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamaTest.MyXamlPage">
    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

    public partial class MyXamlPage : ContentPage
    {
        public MyXamlPage()
        {
            InitializeComponent();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Dus*_*gal 56

更新: 这个错误通常不会出现在VS 2015中,如果有的话,这是我原来的答案:

找到了解决方案!右键单击.XAML文件,选择" 属性".

您将看到一个名为Custom Tool的属性.将其值更改MSBuild:CompileMSBuild:UpdateDesignTimeXaml

这将解决问题.不知道downvote,但这是我的截图:

截图 更新:

它很少再出现.如果是这样,只需打开Xaml和代码隐藏文件并保存它们.我知道,它不是最好的解决方案,但它完成了工作.

  • 在我的项目中,值为MSBuild:UpdateDesignTimeXaml.我改为MSBuild后:编译好了.VS SUCKS (3认同)
  • @Veverke,很抱歉收到您的延迟答复,但请看我答案的底部。如果您已经拥有“ MSBuild:Compile”,则只需打开Xaml并在文件后面编码并保存即可。我知道,这不是最好的解决方案,但可以完成工作。 (2认同)

roo*_*oot 34

我有时会得到这个,这是迄今为止解决它们的清单:

  1. 确保.xaml和.xaml.cs中的命名空间匹配

  2. 从正确的父级继承 - 页面的ContentPage和控件的ContentView

  3. Embedded Resource在共享项目中将.xaml文件的构建操作设置为if.

  • 确保.xaml和.xaml.cs中的命名空间匹配..这是一个重要的重点.Visual Studio有时不会自动更新它. (4认同)
  • 我的问题是x:Class。看来它仍然指向Page1 (2认同)

har*_*r07 31

就我的观察而言,在Visual Studio 2015中,XAML属性已经按照默认情况下高度投票的答案建议设置,具体如下:

  • 自定义工具= MSBuild:UpdateDesignTimeXaml
  • 构建行动= Embedded Resource

但错误有时仍会出现......(就像在另一个问题中).

编辑相应的XAML文件然后点击CTRL+ S应该可以正常工作,但你不必这样做.强制运行自定义工具的更简洁方法是右键单击XAML文件,然后单击"运行自定义工具"上下文菜单.

在此输入图像描述


小智 12

我遇到了这个问题.它与VS中的XAML文件编码相关联.我正在使用VS2015.

我解决了这个问题如下:

  1. 打开项目中的*.xaml文件,然后单击"保存"按钮.(将在VS2015中应用正确的编码).

  2. 然后重新打开项目并重建它.现在没有错误.


Tho*_*ler 10

更新Xamarin.Forms NuGet包应该可以完成这项工作

  • 在这里找到解决方案:http://blog.galasoft.ch/posts/2014/07/using-xamarin-forms-with-mvvmlight/在您创建新的xaml页面时,有一个错误.它自动获取扩展名.cs而不是xaml.我从没注意到这一点.谢谢! (2认同)
  • @ user2915962 NuGet包更新和清理/重建(+重启)并没有解决我的问题.在看完评论后,我决定添加一个新的Xamarin Forms XAML页面.使用新页面构建后,两个页面上的"InitializeComponent"错误消失了!看起来像某种VS状态问题.当问题出现时,我可以逐步完成编译生成的InitializeComponent代码而不会出现问题.我猜测在NuGet包升级之后添加一个新的XamForms XAML页面有助于理清一些干净/重建没有的VS内部状态,但这是未经证实的. (2认同)

bat*_*aci 7

这可能不是您的情况,但我遇到了类似的问题,我的问题是xaml和名称不匹配的代码。例如,根据您的示例,如果名称空间后面的代码是XamaTest(大多数情况下为应用程序的名称),并且类名为MyXamlPage,则您的xaml类名称必须为XamaTest.MyXamlPage([namespace]。[[classname])

在创建一个空的xaml和后面的代码后,我很傻,我在xaml中更改了类的名称,并且遇到了这个错误。

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamaTest.MyXamlPage">
    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

后台代码:

public partial class MyXamlPage : ContentPage
Run Code Online (Sandbox Code Playgroud)


Kim*_*sen 5

尝试在 xaml 页面上添加 ax:Name="..." ...有时仍然得到它)。我使用 Xamarin.Forms 的最新版本 (1.5.0.6447)...

XAML 不适用于共享项目 - 它仅适用于可移植项目...

  • 我有 1 个没有 x:Name 属性的元素/控件..一旦我添加错误消失了 (2认同)