如何连接xaml和xaml.cs文件

时间:2011-12-15 15:54:50

标签: c# .net wpf xaml

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

Solution Explorer

我正在尝试WPF,所以可能是一个外行问题。

11 个答案:

答案 0 :(得分:71)

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

答案 1 :(得分:44)

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

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

以下是要查找的信息,您需要添加“DependentUpon”标记。

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

答案 2 :(得分:15)

最简单的方式!!!

我遇到了同样的事情。我找到了出路。以下是如何在解决方案资源管理器中将.xaml.cs嵌套在.xaml下:

  1. 在Windows文件资源管理器(Visual Studio外部)中,打开所需文件所在的文件夹。
  2. 同时选择两个文件(.xaml和.xaml.cs)。
  3. 将其拖到解决方案资源管理器中的项目名称上。
  4. 完成了! :)

答案 3 :(得分:5)

根据Kyle White对官方Xamarin bug report 55591: .xaml files in .NETStandard library appear twice in solution explorer的评论,我在链接.NET Standard sample project by Oren Novotny

中找到了解决此问题的简单方法

.csproj 文件中,添加以下&lt; ItemGroup&gt;

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

之后,项目结构中的所有xaml文件将自动显示在“解决方案资源管理器”窗口中 - 即使您已经添加了新的xaml文件。

这个神奇的工作原理如何?

ItemGroup 中的编译元素正在使用通配符迭代所有目录,搜索.xaml.cs个文件并将其标记为依赖于{{1同名的文件。请注意,这只是因为用于 DependentUpon 元素的xaml项元数据包含最左侧的文件扩展名,它按照惯例与%(Filename)文件的名称匹配。 EmbeddedResource 元素将包含项目的所有xaml个文件,以便它们在解决方案资源管理器窗口中可见,同时将它们标记为 Designer 文件,并声明该文件应使用Xamarin.Forms NuGet包中定义的xaml目标从标记文件生成代码。

答案 4 :(得分:2)

使用Xamarin共享代码解决方案:

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

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

3)保存文件

4)回到visual studio,你应该得到一个对话框,允许你重新加载所有内容或者再次打开项目。

答案 5 :(得分:1)

如果您获得了嵌套文件VS扩展,您可以通过右键单击类似命名的文件并选择“自动嵌套”或手动嵌套来完成此操作。

https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting

答案 6 :(得分:1)

在共享项目中,存在.shproj文件而不是.csproj文件,并且和项目不存在。 但是我发现还有一个.projitems文件,并且如上所述在其中添加了一部分,导致.xaml和.cs文件被链接

答案 7 :(得分:0)

Xamarin Forms项目的更简单,更快速的解决方案,根本不需要触摸csproj文件,非常快速的修复。

确保为解决方案资源管理器选择了Show All Files - 默认情况下它可能已启用。

  1. 选择所有受影响的文件
  2. 右键单击&gt; Exclude from Project
  3. 再次选择相同的文件(应该淡出)
  4. 右键点击&gt; Include in Project
  5. 现在它们都应该正确嵌套,并且.csproj文件所需的所有更改都将完成。

    此后您可能会遇到InitializeComponent() does not exist in the current context)错误。 如果是这样,那么简单的修复就是......

    • 选择所有受影响的项目并将Build ActionPage更改为Embedded Resource

答案 8 :(得分:0)

通常-关闭Visual Studio,删除解决方案根目录中的vs文件夹,然后重新打开Visual Studio(2019),对我来说才有用。

答案 9 :(得分:0)

对于 VS 2019,您只需编辑 .csproj 文件并消除对 .xaml.cs 文件的所有引用 es:

<ItemGroup>
    <Folder Include="Models\" />
    <Folder Include="Services\" />
    <Folder Include="ViewModels\" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Views\MyPage.xaml">
      <LogicalName>MyPage.xaml</LogicalName>
    </EmbeddedResource>
  </ItemGroup>

答案 10 :(得分:-1)

我能够重新启动Visual Studio for Mac 2019 v16.2,它重新连接了应该连接的.xaml和.cs文件。

如果这不起作用,那么Hitsa的解决方案在另外的情况下也对我有用。