我怎样才能连接xaml和xaml.cs文件

我有一个VB投影,并使用在线转换工具将其转换为C#。 现在问题是xamlxaml.cs文件不能相互连接,也就是说他们不能识别它们的依赖关系(图中的红色区域)。 实际上,它应该像Window1文件(图像中的绿色区域)。我怎样才能实现这一点。

Solution Explorer

我正在尝试使用WPF,所以可能是一个普通人的问题。

这很简单,尝试添加项目现有项目,并select格式列表中的XAML(而不是.cs等)文件。 在VS2010多数民众赞成在帮助。

如果你不能让IDE来做(Papa John的post),那么你可以通过编辑项目文件来完成。

该信息位于.csproj文件中(这是一个XML文件 – 您可以在文本编辑器中打开它,或右键单击它,select“卸载”,然后打开它 – select重新加载以加载它作为一个项目再次)。

这里是要查找的信息,你需要添加“DependentUpon”标签。

 <Compile Include="TheFile.xaml.cs"> <DependentUpon>TheFile.xaml</DependentUpon> </Compile> 

我碰到了一样的。 我find了出路 下面是如何获取嵌套在解决scheme资源pipe理器中.xaml下的.xaml.cs文件:

  1. 在Windows文件资源pipe理器(Visual Studio外部)中,打开所需文件所在的文件夹。
  2. 一起select两个文件(.xaml和.xaml.cs)。
  3. 将其拖到解决scheme资源pipe理器中的项目名称上。
  4. 完成! 🙂

使用Xamarin PCL解决scheme:

1)转到您的PCL文件夹并打开您的MySolution.csproj文件

2)应该有几个<ItemGroup>标签组。 其中一个声明<EmbeddedResource>标签,另一个标签将包含<Compile> <DependentUpon></DependentUpon></Compile>标签组。

3)为了链接MyPage.xamlMyPage.xaml.cs文件,你必须有一组xml声明你的xaml页面。

 <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共享代码解决scheme:

1)卸载共享项目后转到您的项目文件夹

2)findprojitems文件并编辑添加DependentUpon标签,如上面其他答案中所述。

3)保存文件

4)回到视觉工作室,你应该得到一个对话框,让你重新加载全部或再次打开项目。

基于Kyle White对官方Xamarin bug报告55591的评论:.NET解决scheme资源pipe理器中的.xaml文件出现两次 ,我在Oren Novotny

在您的.csproj文件中,添加以下<ItemGroup>

 <ItemGroup> <Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" /> <EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" /> </ItemGroup> 

之后,项目结构中的所有xaml文件将自动显示在“解决scheme资源pipe理器”窗口中 – 即使您将添加新的xaml文件。

这个魔法是如何工作的?

ItemGroup中Compile元素使用通配符遍历所有目录,search.xaml.cs文件并将其标记为依赖于同名的xaml文件。 请注意,这仅适用于因为用于DependentUpon元素的%(Filename)项目元数据包含最左边的文件扩展名,该扩展名按照惯例与xaml文件的名称相匹配。 EmbeddedResource元素将包含项目的所有xaml文件,以便在解决scheme资源pipe理器窗口中将其标记为Designer文件,并声明在Xamarin.Forms NuGet包中定义的UpdateDesignTimeXaml目标应该用于从标记文件。