为什么Visual Studio找不到我的WPF InitializeComponent方法?

wil*_*lem 49 wpf

这很奇怪.

我有一个XAML文件,如下所示......

<Window
    x:Name="window"
    x:Class="ix.Production.Title"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Title" Height="768" Width="1024"
    Loaded="window_Loaded">

    <Window.Resources>
   etc...
Run Code Online (Sandbox Code Playgroud)

我的代码旁边看起来如下......

using System;
using System.Windows;
using System.Windows.Media.Animation;
using System.Threading;

namespace ix.Production
{
    public partial class Title : Window
    {
        public Title()
        {
           InitializeComponent();
        }
    ....
Run Code Online (Sandbox Code Playgroud)

此代码拒绝编译,因为Visual Studio坚持认为InitializeComponent"在当前上下文中不存在".

我该如何解决这个问题?

gp.*_*gp. 48

有一种情况我在复制粘贴XAML控件/窗口等时发现了这种情况.InitializeComponent方法存在于自动生成的相应.g.cs文件中.在我的例子中,在复制粘贴后,XAML的Build Action(在Properties窗口中)被更改为"Resource".我把它改成了"Page",它开始工作正常.

我希望这有帮助.

这让我这个线程是"的InitializeComponent"的名称不存在....

  • 复制/粘贴代码时,请注意确保命名空间和类与代码隐藏**一致.这是我犯的错误. (6认同)
  • +1我在切割和粘贴操作后改为`CodeAnalysisDictionary` ...很好的一个微软!在将其设置回"Page"后全部修复.非常感谢gp. (3认同)
  • 复制和粘贴时我经常遇到这个问题,很高兴知道检查这个问题. (2认同)
  • 在我的情况下,将构建更改为其他内容并返回Page可以正常工作(已经标记为“ Page”)...。 (2认同)

Boj*_*nik 34

你的XAML说:

x:Class="ix.Production.Title"
Run Code Online (Sandbox Code Playgroud)

而实际的班级是ix.Outage.Title.更改XAML声明或将类移动到ix.Production命名空间.


Dav*_*ghn 14

这么简单,但很容易被忽视:MainWindow's x:Class被设置为" MainWindow",当它应该设置为namespace.MainWindow(x:Class="namespace.MainWindow")时.如果没有这样做,那么该MainWindow.g.xaml文件将不包含命名空间块,并且对InitializeComponent()in MainWindow的构造函数的调用将不起作用.

虽然这显然不是Willem问题的解决方案,但我在这里发布了它,因为列出了许多其他解决方案.希望这可以帮助那些在尝试修复问题时偶然发现这篇文章的人.


rmo*_*ore 7

您的命名空间不匹配:

x:Class="ix.Production.Title"
namespace ix.Outage { ...
Run Code Online (Sandbox Code Playgroud)


wil*_*lem 1

看起来这是 Visual Studio 2008 中的一个问题。

如果我创建一个新文件(即 Title2),复制/粘贴代码和 XAML,然后将所有“Title”更改为“Title2”,一切都会再次正常工作。