为什么不能Visual Studiofind我的WPF的InitializeComponent方法?

这很奇怪。

我有一个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... 

而我的代码旁边,如下所示…

 using System; using System.Windows; using System.Windows.Media.Animation; using System.Threading; namespace ix.Production { public partial class Title : Window { public Title() { InitializeComponent(); } .... 

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

我该如何解决这个问题?

一种情况是我在复制粘贴一个XAML控件/窗口等时看到了这种情况。InitializeComponent方法存在于自动生成的对应的.g.cs文件中。 在我的情况下,复制粘贴后,XAML的生成操作 (在属性窗口中)被更改为“资源”。 我把它改成了“页面” ,它开始正常工作。

我希望这有帮助。

帮助我这个线程是名称'InitializeComponent'不存在…。

你的XAML说:

 x:Class="ix.Production.Title" 

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

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

虽然这显然不是willem问题的解决scheme,但是我在这里发布了它,因为列出了很多其他的解决scheme。 希望这会帮助别人在试图解决他们的问题时绊倒这个职位。

你的命名空间不匹配:

 x:Class="ix.Production.Title" namespace ix.Outage { ... 

当我将PCL(包含我的数据类)添加到解决scheme的时候,我无法从代码中findInitializeComponent和其他与XAML相关的UI位。

:|

但是,如果我删除PCL之一..它可以再次被发现。

无论是否发现 – 我仍然可以编译。 当我键入代码时,我不能自动完成。

也许你的解决scheme中有一个PCL项目? (我不知道如何解决这个问题)

我与Visual Studio 2010示例项目有相同的问题,我手动还原到Visual Studio 2008.我发现我忘记将项目的目标框架设置为.NET Framework 3.5。 在项目恢复到Visual Studio 2008时,它是空的,最初在Visual Studio 2010项目中设置为4.0。

要设置项目的目标框架,请转到项目属性,访问名为“ 应用程序”的第一个选项卡,然后在“目标框架”下拉列表中select“.NET Framework 3.5”。

当然,我更喜欢Visual Studio给我一个错误,或者至less有一个警告,我没有设置我的目标框架,但嘿,这是我在Visual Studio中开发的一部分。

Visual Studio 2008 WPF项目属性

我通常在重命名自定义控件类时遇到这个问题,或者像你的情况那样改变类的名字空间的名字。 如果您不使用Visual Studio的重构,则必须手动更改XAML和C#文件中的名称。

只需重命名类就可以进行重构,对于命名空间重命名,您必须手动执行。

对于InitializeComponent ,请查看[Project Folder]\obj\Debug\<class_name.g.cs>

你的类是部分的,所以你应该有另一个包含Title类的其他部分的文件(例如InitializeComponent方法)。 尝试find该文件,并查看该文件中的名称空间是否等于包含类的其他部分的文件的名称空间。

看起来这是在Visual Studio 2008中的一个扭曲。

如果我创build一个新文件(即Title2),复制/粘贴代码和XAML,然后将所有“标题”更改为“标题2”,一切正常。

我在这里也遇到了同样的问题。 我所做的是删除debugging文件夹中的所有创build的文件,然后重新生成解决scheme。

问候,佩特鲁斯

当我从msdn获得项目样本时,遇到了同样的问题。 问题是这是一个4.0项目,我没有在我的系统4.0,几个引用的DLL丢失(system.xaml和另一个)删除它们。 试图编译,总会抛出未find的initializecomponent方法。 进入项目属性,将目标框架改为3.5,不再抱怨了。

FWIW,在将Visual Studio 2008解决scheme迁移到Visual Studio 2010后,我今天遇到了同样的问题。看起来,迁移和项目失去了他们的Target Framework (在Project Properties中):现在这个设置是空的!

设置.NET Framework 3.5解决了这个问题。

这发生在我身上,因为Visual Studio将“构build操作”设置为一些随机操作,当您在解决scheme中复制/粘贴或将XAML文件从一个项目移动到另一个项目时。

解决scheme:确保您的“构build操作”已设置为您的XAML页面。

我希望这可以帮助你,如果这是你的情况。