Pap*_*ohn 75
这很简单,尝试添加项目现有项目并选择格式列表中的XAML(而不是.cs等)文件.在VS2010中有帮助.
JMa*_*sch 45
如果你不能让IDE去做(Papa John的帖子),那么你可以通过编辑项目文件来完成它.
该信息位于.csproj文件中(这是一个XML文件 - 您可以在文本编辑器中打开它,或者右键单击它,选择"卸载",然后打开它 - 选择重新加载以加载它作为一个项目再次).
以下是要查找的信息,您需要添加"DependentUpon"标记.
<Compile Include="TheFile.xaml.cs">
<DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
Hit*_*tsa 15
最简单的方法!
我遇到了同样的事情.我找到了出路.以下是如何在解决方案资源管理器中将.xaml.cs嵌套在.xaml下:
使用Xamarin PCL解决方案:
1)转到PCL文件夹并打开MySolution.csproj文件
2)应该有几组<ItemGroup>标签.其中一个声明了<EmbeddedResource>标签,另一个将包含<Compile> <DependentUpon></DependentUpon></Compile>标签组.
3)对于要链接的MyPage.xaml和MyPage.xaml.cs文件,您必须有一组声明xaml页面的xmls.
<EmbeddedResource Include="MyPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)
<Compile Include="MyPage.xaml.cs">
<DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的页面位于文件夹中,则应指定如下:
<Compile Include="Views\MyPage.xaml.cs">
<DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
<EmbeddedResource Include="Views\MyPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)
请注意,这适用于OSX和Windows
基于Kyle White对官方Xamarin错误报告55591的评论:.NETStandard库中的.xaml文件在解决方案资源管理器中出现两次,我在Oren Novotny的链接.NET标准示例项目中找到了一个简单的解决方案
在.csproj文件中,添加以下<ItemGroup>:
<ItemGroup>
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
<EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
之后,xaml项目结构中的所有文件将自动显示在"解决方案资源管理器"窗口中 - 即使您要添加新xaml文件也是如此.
这个神奇的工作原理如何?
ItemGroup中的Compile元素使用通配符迭代所有目录,搜索文件并将它们标记为依赖于同名文件.请注意,这只是因为用于DependentUpon元素的项元数据包含最左侧的文件扩展名,该扩展名按惯例与文件名匹配.该EmbeddedResource元素将包括所有的项目文件,使他们的解决方案资源管理器窗口中可见,而其标记为设计文件,并宣布将在Xamarin.Forms NuGet包中定义的目标应该是用于从标记生成代码文件..xaml.csxaml%(Filename)xamlxamlUpdateDesignTimeXaml