【问题标题】:Accidentally deleted the code behind for an Xaml file. How do I add the code behind again?不小心删除了 Xaml 文件的代码。如何再次添加后面的代码?
【发布时间】:2011-03-02 16:43:57
【问题描述】:

我没有排除它,而是错误地删除了 Xaml 文件的 .cs 代码隐藏文件。现在,我不知道如何在后面添加代码。

这个窗口是空的,上面没有 UI 控件。 “查看代码”已禁用,我无法在任何地方看到此 xaml 的事件(闪电图标)。

请帮忙。

【问题讨论】:

  • 撤消、从回收站或版本控制恢复不是一个选项?
  • 对我来说这些都没有帮助。最后,我不得不删除 Xaml 并从头开始创建一个。

标签: wpf xaml code-behind c#


【解决方案1】:

有两个必需步骤和一个可选步骤:

  1. 在同一目录下新建一个.xaml.cs文件(右键项目->添加->新建项->类)
  2. 从项目中的其他一些 .xaml.cs 中复制样板代码,适当地更改类名称(例如,复制“using”指令、类声明和包含 InitializeComponent 调用的构造函数)。
  3. (可选)编辑您的 .csproj 文件,在 .xaml.cs 文件的 <Compile> 元素下方添加一个 <DependentUpon> 元素,这样它就会出现在 .xaml 文件的“内部”,而不仅仅是在其下方。如果您要更新项目以使用 Blend (v4) 进行编辑,则这第三步是必需的,而不是可选的,以便使用检查器将事件添加到控件。

轻松编辑 .csproj 文件:

  1. 右键单击项目并选择“卸载项目”
  2. 再次右键单击项目节点并选择“编辑[项目名称].csproj”
  3. 编辑 XML,然后关闭文件
  4. 再次右键单击项目节点并选择“重新加载项目”

如果您使用的是 VB.NET,一切都一样,只需将“cs”替换为“vb”即可。

【讨论】:

  • 这也适用于 VS2019,如果您在解决方案资源管理器中单击“重新加载 [项目名称]”,它会要求保存并关闭 csproj 文件,因此不需要第 2 段中的第 3 步
【解决方案2】:

我认为您所要做的就是创建一个新的类文件并将其命名为与您的 xaml 完全一样的名称,并带有 cs 扩展名...

test.xaml

test.xaml.cs

适用于 vb....

【讨论】:

    【解决方案3】:

    据我所知,如果没有Version Control,如果项目已保存,则无法恢复。您应该考虑将代码放在版本控制上。

    此时我会考虑重新创建您的 xaml 文件,复制您的旧代码,然后在 XAML 中删除您的事件并重新创建它们,一旦您重新创建它们,它将重现后面的代码。

    【讨论】:

    • 谢谢杰史密斯。目前我没有关于 Xaml 本身的任何事件。另外,这是我自己学习 WPF 的一个小实验,所以我没有为此使用版本控制。我试图避免不得不删除 XAML 本身并从头开始添加新的 Xaml。
    • 只需在记事本中复制 XAML 代码即可。删除 XAML 文件,然后重新创建 XAML 文件,将其命名相同,这将重新创建 .cs 文件。将您的代码重新复制回文件中,如果没有版本控制,您将不得不重写您的任何代码。
    • 谢谢杰史密斯。我试过了,它解决了我的问题。我很好奇,难道没有一种非黑客的方式吗?
    • 我不觉得这是一个黑客。我认为解决此问题的最简洁方法是使用版本控制进行恢复。既然这是一个学习项目,我理解你为什么不把它放在 VC 上。
    【解决方案4】:

    我知道我迟到了……但这对我来说很有效。如果您在 VisualStudio 中,您可以: 1.从项目中排除所有要链接的文件 2. 仅包含 .xaml 文件。对我来说,这包括 .xaml.cs 文件以及背后的代码。

    注意: 确保 .csproj 文件中的编译关系正确。它应该是这样的:

    <ItemGroup>
      <Compile Include="App.xaml.cs">
        <DependentUpon>App.xaml</DependentUpon>
      </Compile>...
    

    要查看该文本,您需要卸载项目,然后在任何文本编辑器中编辑 .csproj 文件。如果您右键单击已卸载的 .csproj 文件,VS 2015 还允许您编辑该文件。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多