Xamarin.Forms で .XAML ページを作成するたびに、3 つの異なる場所で部分クラス定義を使用しています。
実際の .xaml ファイルには、名前空間とクラス名を定義するルート要素に Class="" 属性があります。実際のルート要素の型は、新しい .xaml ページがサブクラス化する基本クラスを定義します。デフォルトでは、それは ContentPage です。
また、部分的なクラス定義を含むリンクされた .xaml.cs ファイルも取得します。これはコード ビハインド ファイルで、ページ固有のコードを配置します。これは、コンストラクターから InitializeComponent() 呼び出しが呼び出される場所でもあります。
この呼び出しは、xaml のコンテンツを解析し、xaml で x:name="something" を使用して ID を指定したすべてのビューへの参照を入力します。
InitializeComponent() は xamarin によって自動的に生成されます。これはプロジェクトの出力の一部であり、.xaml ファイルを編集するたびに再生成する必要があります。
これを行うには、.xaml ファイルのプロパティで、ビルド アクションを「埋め込みリソース」に設定し、カスタム ツールを「MSBuild:UpdateDesignTimeXaml」に設定する必要があります。
現在、これらの値が正しく設定されていても、Xamarin にはバグがあり、ファイルが生成されず、エラーが発生する可能性があります。
このエラーが発生したときに最初に試すことは、.xaml ファイルを右クリックし、[カスタム ツールの実行] をクリックすることです。これを行う必要があるのは 1 つの xaml ファイルに対して 1 回だけで、ツールはプロジェクト内のすべての .xaml ファイルに対して自動的に実行されます。
これは、通常の開発中に 1 日に 1 回実行しなければならないことであり、VS 2015 に切り替えたときに始まりました。
確認すべきもう 1 つの非常に重要な点は、.csproj ファイルの BuildTargets です。
Xamarin がそれを実行できる方法は、Xamarin.Forms nuget パッケージをインストールするときに取得する DLL を呼び出すビルド アクションを指定することです。ビルド アクションのインポート行がめちゃくちゃになることがあり、これがあらゆる種類の問題を引き起こします。
.csproj をアンロードし、Xamarin.Forms.targets をインポートする行を見つけます。次のようになります。
<Import Project="..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
ここのバージョンが packages.config ファイルの Xamarin.Forms のバージョンと一致していることを確認してから、実際にプロジェクトのルート フォルダーに移動できることを確認し、重要な行が参照している実際のファイルを見つけます。つまり、packages\xamarin...\Xamarin.Forms.targets
一般的に行うことは、\packages\ からすべてを削除し、次のビルドで nuget にすべてを再ダウンロードさせることです。.csproj インポートのバージョンと packages.config のバージョンが同じであることを確認してください。
これらがすべて完了すると、InitializeComponent() を実装する有効な部分クラスが生成され、エラーが消えるはずです。