Xamarin.Formsを試すためにVisual Studioを使用しています。私はガイドに従うことを試みています: 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();
}
}
ここでの問題は、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
}
}
そして私の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>
コードビハインド:
public partial class MyXamlPage : ContentPage
{
public MyXamlPage()
{
InitializeComponent();
}
}
私は時々これを受け取ります、そして、ここにそれらをこれまでに解決したチェックリストがあります:
.xamlと.xaml.csの名前空間が一致することを確認してください
正しい親から継承-ページの場合はContentPage、コントロールの場合はContentView
共有プロジェクトの場合は、.xamlファイルのビルドアクションをEmbedded Resource
に設定します。
私の観察に関する限り、Visual Studio 2015では、XAMLプロパティは、デフォルトで、特に投票の多い回答で示されているように、デフォルトで既に設定されています。
MSBuild:UpdateDesignTimeXaml
Embedded Resource
しかし、それでもエラーが表示されることがあります...( この他の質問 のように)。
対応するXAMLファイルを編集してからヒット CTRL+S うまくいくはずですが、そうする必要はありません。カスタムツールを強制的に実行するには、XAMLファイルを右クリックして、[カスタムツールの実行]コンテキストメニューをクリックします。
この問題に遭遇しました。 VSのXAMLファイルのエンコードに関連付けられています。 VS2015を使用しています。
この問題を次のように解決しました。
プロジェクトで* .xamlファイルを開き、[保存]ボタンをクリックします。 (VS2015では正しいエンコードが適用されます)。
次に、プロジェクトを再度開き、再構築します。現在、エラーはありません。
Xamarin.Forms NuGetパッケージを更新すると、仕事ができるはずです
これはおそらくあなたのケースではありませんが、私は同様の問題を抱えていて、私は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>
コードビハインド:
public partial class MyXamlPage : ContentPage
Xamlページにax:Name = "..."を追加してみてください...他には何も機能しませんでした-しかし、ページ上のいくつかの要素にx:Name属性を追加すると、エラーが消えました(ほとんどの場合-Iそれでも時々それを取得します)。 Xamarin.Formsの最新ビルド(1.5.0.6447)を使用しています...
XAMLは共有プロジェクトでは機能しません-ポータブルプロジェクトでのみ機能します...
Xamarin.FormsページでInitializeComponentなどのインテリセンスエラーが発生するが、プロジェクトが実際にビルドされて正常に実行される場合は、ウィザードを使用して新しいフォームページを追加し、すべてのエラーを修正します...
その後、その新しいページを削除できます。
次の場合にこのエラーに遭遇しました;
ContentPage-cs+xaml
とApp-cs+xaml
を実際に削除せずに削除しました。これは修正されました;
.xaml
ファイルを選択します。properties
を選択します。Build action
で[埋め込みリソース]を選択しますCustom Tool
に「MSBuild:UpdateDesignTimeXaml」と入力しますページテキストx:Class="AppName.Page1"
を確認してください。 AppNameはアプリ名でなければなりません
blah.xaml.g.cs
ファイルの(再)生成が実際に問題のようです。私はこれを共有プロジェクトでLOTにします(他に選択肢がない限り、私はそれらを使用しません)。私にとっては、何らかの理由で、Visual StudioよりもXamarin Studioで多く発生します。 XSをまったく使用しないようにします。
多くの場合、他のプラットフォームの1つをアンロードし(たとえば、droidをビルドしている場合は、iosをアンロードします)、クリーンおよび再構築を行うと修正されます。
また、問題のある.xaml
ファイルの1つを開いて、xamlマークアップの一部を変更する(たとえば、コントロールまたはビューのいずれかにx:Name
を追加または変更する)こともできます。これにより、xaml.g.csファイルが強制的に再生成され、(少なくとも私にとっては)通常は問題が解決します。
これは本当にカントーであってはなりません。
* .xamlを右クリックしてプロパティをクリックし、「カスタムツール」の値を「MSBuild:UpdateDesignTimeXaml」に変更し、次に「ビルドアクション」プロパティを「Embedded Resource」に変更して、プロジェクトをビルドします。
クリーンと再構築は私のためのトリックをしました!
Visual Studio 2013
update 4環境でも同様の問題があり、Webで見つけたすべての推奨事項を試しました。何も私の問題を解決しませんでした。Visual Studio 2015
プレビューをインストールし、xamarin formsプロジェクトで新しい空のアプリを作成しました。Xaml
ファイルを追加すると、すべてがOKになり、InitialComponent
メソッドの問題がなくなりました。私のために働いた非常にシンプルなソリューション:
これで、InitializeComponent()関数が赤い下線なしで表示されます。
これが誰かを助けることを願っています。
この問題は、ソリューションのプロジェクトがDLL「Xamarin.Forms.Core」、「Xamarin.Forms.Xaml」、および「Xamarin.Forms.Platform」バージョン1.0.0.0のバージョン1.4.0.0を参照している場合に発生します。
これを解決するには、dllのバージョン1.3.3.0にダウングレードする必要がありましたが、このバージョンではXamarin.Forms.Platform 1.0.0.0は存在しません。
このエラーが発生したときにキャッシュの問題が発生しました。
これを修正するには、単にninstall Xamarin.Formsパッケージの最終バージョンとreinstall以前の作業バージョンを使用します。
再構築が成功したら、pdateパッケージを再度最新バージョンに戻します。
クラス名を正しく確認してください。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="{AppName}.{ClassName}">
</ContentPage>
クラス名は、アプリ名と部分クラス名の組み合わせにする必要があります
私は時々同じ問題を抱えていましたが、これを修正するために私がやっていました:PCLプロジェクトで、新しいクロスプラットフォームXAMLページをプロジェクトに追加します。 「フック」への参照に新しいXAMLページを追加するには数秒かかります。新しいXAMLページがプロジェクトに正常に追加されると、XAMLページ(問題がある)の赤い下線がクリアされます。問題が解決したら、追加したXAMLファイルを削除するだけです。 -要約すると、新しいXAMLページを追加してから削除すると、問題が解決しました。
私はただ更新されたすべてのパッケージ、正常に動作します。
ページプロパティを次のように変更します。
BuildAction => Embedded resource
CustomTools => MSBuild:UpdateDesignTimeXaml
これが解決するかどうかはわかりませんが、私にとっては、XAMLの最初の行を削除する必要があります( "xml version =" 1.0 "encoding =" utf-8 ")
時々、ソースバージョン管理は、どのタイプのファイルかを識別し、この種のものを追加しようとします。
これは多くのことが原因であるように見えるので、これらすべてを読んでまだ解決していない場合:
私の原因は、Solution ConfigurationがReleaseに設定されていることです。 デバッグに変更され、エラーが解決されました。
私の場合、問題はプロジェクトのパスでした。生成されたコードファイルは、有効なファイル名にするためにエンコードされた絶対パスを含む名前を取得します。パスは「D:\ Projekt C#\ ProjectRootFolder\Project」でした。ビルドツールによって生成されたファイル名は「Project.Droid.D_.Projekt_C_。Namespace etc.」でした。私の場合、プロジェクトを「D:\ project\ProjectRootFolder」のようなパスに移動すると役立ちました。
最終的な解決策は、プロジェクトファイルをテキストエディターで編集し、競合しない別のファイルからパターンをコピーすることです。このソリューションは私のために働いた。通常、次の構文を探します。
<Compile Update="Your\Path\YourContentPage.xaml.cs">
<DependentUpon>YourContentPage.xaml</DependentUpon>
</Compile>
ルート要素に特定の参照属性(私の場合はutil
)がありませんでした:
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="MyProject.Views.HomePage"
xmlns:util="clr-namespace:Porject.Library.Util;Assembly=Library"
>
App.xaml
およびMainPage.xaml
ファイルを選択します。MSBuild:UpdateDesignTimeXaml
」と入力します私はVS Community Edition 2019で同じ問題を抱えていましたが、再生成ソリューションを使用しましたが、問題は修正されました
using Xamarin.Forms.Xaml
を追加
visual Studio 2017でテスト済み
私はVisual Studio 2015を使用していますが、同じ問題が発生しましたが、ネット上の回答が完全なソリューションではないことがわかりました。ここで、私にとって何がうまくいったかを説明します。
ここでの私の主な目標は、表示され続ける赤いエラーメッセージを排除することでした
名前
InitializeComponent
は現在のコンテキストに存在しません
基本的に、InitializeComponent2()
とまったく同じことを行うInitializeComponent()
という関数を作成し、代わりにそれを使用して、文字通りInitializeComponent()
のコードをコピーしました。仕事をします。
次のようになります(説明します)。
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
private void InitializeComponent2()
{
// Change to:
// this.LoadFromXaml(typeof(Page2)); // for Page2
// this.LoadFromXaml(typeof(Page3)); // for Page3
// and put
// using Xamarin.Forms.Xaml;
// at the top of each source file.
this.LoadFromXaml(typeof(Page1));
}
各ページ(.cs
ファイル)の定義に関数を追加します。
public partial class Page1 : ContentPage
{
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
private void InitializeComponent2()
{
// Change to:
// this.LoadFromXaml(typeof(Page2)); // for Page2
// this.LoadFromXaml(typeof(Page3)); // for Page3
// and put
// using Xamarin.Forms.Xaml;
// at the top of each source file.
this.LoadFromXaml(typeof(Page1));
}
}
また、LoadFromXaml(..)
が使用される各using Xamarin.Forms.Xaml;
ページの先頭に.cs
を配置する必要があります。
そしてもちろん、InitializeComponent()
をInitializeComponent2()
に変更して、新しい関数を呼び出します。つまり、エラーが消えるページと同じコンテキストに関数を配置しました。プロジェクトを変更すると、実際のInitializeComponent
関数に何かが追加されるとは想像できませんが、可能性はあります。これまでのところ私にとっては大丈夫です。
ビルドアクション、XAML名前空間の変更、再起動vsクリーニング+再構築、NuGetパッケージの更新の検索など、多くのことを試しました。
基本的に、Visual StudioはAndroidデバイス+エミュレーターでプログラムをコンパイルして正常に実行しましたが、そのエラーメッセージは消えません。私のソリューションはAndroid向けですが、iOSなどでも機能する場合があります。
問題の根本に戻ったInitializeComponent()
この関数の実際のコードは、たとえば<Your Project Name>.Page1.xaml.g.cs
またはPage2.xaml.g.cs
というファイルに生成されます。ただし、それ(ファイル)は、特定のイベントが発生したときにのみ生成されます。 xamlページ(.xaml
ではなく.cs
で終わるファイル-.xaml
ファイルが選択されていることを確認してください)の1つに対して、そのイベントを発生させた「カスタムツールネームスペース」にテキストを入力して、 Enterキーを押すと、ファイルが作成されます。
それから、InitializeComponent2()
、InitializeComponent()
とまったく同じ関数を作成し、それを各csファイルに入れて、エラーを解消するたびに.xaml.g.cs
を生成することなく存在するという素晴らしいアイデアを思いつきました。
Xamlページプロパティのみで設定Build Action = Embedded resource
Visual Studio 2017で動作します。
上記のすべてを試してみましたが、うまくいかなかったのは、Xamarin.Formsパッケージを強制的に再インストールすることでした。パッケージマネージャーコンソールのプロンプト。
更新パッケージxamarin.forms -reinstall
パッケージを更新するのではなく、削除して再追加するだけです