VB=を投影し、オンライン変換ツールを使用してC#に変換しました。問題はxaml
とxaml.cs
ファイルは相互に接続しません。つまり、依存関係を認識しません(図の赤い領域)。実際には、Window1ファイル(画像の緑の領域)のように表示されるはずです。どうすればこれを実現できますか。
私はWPFを試しているので、素人の質問かもしれません。
これは簡単です。プロジェクトに既存のアイテムを追加し、形式のリストで(.csなどではなく)XAMLファイルを選択してみてください。 VS2010ではそれが役立ちます。
IDEで取得できない場合(Papa Johnの投稿))、プロジェクトファイルを編集して取得できます。
その情報は.csprojファイル(XMLファイルです。テキストエディターで開くか、右クリックして「アンロード」を選択してから開くことができます)。リロードを選択してロードします再びプロジェクトとして)。
検索する情報は次のとおりです。「DependentUpon」タグを追加する必要があります。
<Compile Include="TheFile.xaml.cs">
<DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
最も簡単な方法!!!
私は同じに出会いました。抜け出した。ソリューションエクスプローラーで.xamlの下に.xaml.csをネストする方法は次のとおりです。
Xamarin PCLソリューションの使用:
1)PCLフォルダーに移動して、MySolution.csprojファイルを開きます
2)<ItemGroup>
タグのグループがいくつかあるはずです。それらの1つは<EmbeddedResource>
タグを宣言し、別の1つは<Compile> <DependentUpon></DependentUpon></Compile>
タグのグループを含みます。
3)MyPage.xamlおよびMyPage.xaml.csファイルをリンクするには、xamlページを宣言するxmlのグループが必要です。
<EmbeddedResource Include="MyPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
<Compile Include="MyPage.xaml.cs">
<DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
ページがフォルダ内にある場合、次のように指定する必要があることに注意してください:
<Compile Include="Views\MyPage.xaml.cs">
<DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
<EmbeddedResource Include="Views\MyPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
これはOSXおよびWindowsで動作することに注意してください
カイル・ホワイトの公式 Xamarinバグレポート55591:.NETStandardライブラリの.xamlファイルがソリューションエクスプローラーに2回表示される に関するコメントに基づいて、リンクされた 。NET Oren Novotnyによる標準サンプルプロジェクト
。csprojファイル内に、次の<ItemGroup>を追加します。
_<ItemGroup>
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
<EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>
_
その後、プロジェクト構造内のすべてのxaml
ファイルは、新しいxaml
ファイルを追加する場合でも、ソリューションエクスプローラーウィンドウに自動的に表示されます。
この魔法の仕組みは?
ItemGroup内のCompile要素は、ワイルドカードを使用してすべてのディレクトリを反復処理し、_.xaml.cs
_ファイルを検索してマーキングします同じ名前のxaml
ファイルに依存するものとして。 DependentUpon要素に使用される%(Filename)
アイテムのメタデータには、左端のファイル拡張子が含まれており、これが慣例によりxaml
ファイルの名前と一致するため、これが機能することに注意してください。 EmbeddedResource要素には、プロジェクトにすべてのxaml
ファイルが含まれるため、ソリューションエクスプローラーウィンドウ内で表示されますDesignerファイル、およびXamarin.Forms NuGetパッケージ内で定義されたUpdateDesignTimeXaml
ターゲットを使用して、マークアップファイルからコードを生成する必要があることを宣言します。
Xamarin Shared Codeソリューションの使用:
1)共有プロジェクトをアンロードした後、プロジェクトフォルダーに移動します
2)projitemsファイルを見つけ、上記の他の回答の説明に従ってDependentUponタグを追加して編集します。
3)ファイルを保存する
4)Visual Studioに戻り、ダイアログを取得して、すべてをリロードするか、プロジェクトを再度開くことができます。
Nested File VS Extensionを取得する場合、同様の名前のファイルを右クリックして「自動的にネスト」を選択するか、手動でネストすることでこれを行うことができます。
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting
共有プロジェクトには、.csprojファイルの代わりに.shprojファイルがあり、およびアイテムはそこに存在しません。しかし、.projitemsファイルもあり、上記のセクションを追加すると、.xamlファイルと.csファイルがリンクされました
Xamarin Formsプロジェクトのさらに簡単で高速なソリューションで、csprojファイルにまったく触れる必要がない、非常に迅速な修正。
ソリューションエクスプローラーで_Show All Files
_が選択されていることを確認してください-デフォルトでオンになっている可能性があります。
Exclude from Project
_Include in Project
_これらはすべて正しくネストされ、.csprojファイルに必要なすべての変更が行われます。
この後、InitializeComponent() does not exist in the current context)
エラーが発生する場合があります。その場合、簡単な修正は..
Build Action
_をPage
から_Embedded Resource
_に変更します