Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将WPF应用程序项目转换为UserControl库会导致找不到InitializeComponent()错误_C#_Wpf_Visual Studio 2010_.net 3.5_Class Library - Fatal编程技术网

C# 将WPF应用程序项目转换为UserControl库会导致找不到InitializeComponent()错误

C# 将WPF应用程序项目转换为UserControl库会导致找不到InitializeComponent()错误,c#,wpf,visual-studio-2010,.net-3.5,class-library,C#,Wpf,Visual Studio 2010,.net 3.5,Class Library,我在做一个项目,在那里我创建了一堆用户控件。后来,我决定将这些控件移动到UserControl库中。我就是这么做的: 创建了一个新的VS2010项目(用户控制库) 将.NET版本设置为3.5 创建了一堆文件夹 将上一个项目中的文件添加到我的库中 但是,当我尝试构建库时,出现以下错误: Error 14 'EChart.Controls.EPreviewGraphSelector' does not contain a definition for 'InitializeComponent

我在做一个项目,在那里我创建了一堆用户控件。后来,我决定将这些控件移动到UserControl库中。我就是这么做的:

  • 创建了一个新的VS2010项目(用户控制库)
  • 将.NET版本设置为3.5
  • 创建了一堆文件夹
  • 将上一个项目中的文件添加到我的库中
  • 但是,当我尝试构建库时,出现以下错误:

    Error   14  'EChart.Controls.EPreviewGraphSelector' does not contain a 
    definition for 'InitializeComponent' and no extension method 'InitializeComponent' 
    accepting a first argument of type 'EChart.Controls.EPreviewGraphSelector'
    could be found (are you missing a using directive or an assembly reference?)    
    C:\Projects\eControls\EChart\EChart\Controls\EPreviewGraphSelector.xaml.cs  73  18  EChart
    
    我的XAML文件的命名空间和代码隐藏不匹配。当它是一个应用程序而不是一个库时,整个项目都在构建中

    以下是我的UserControl的简化代码:

    <UserControl x:Class="EChart.Controls.EPreviewGraphSelector">
    
    • g、 没有为此用户控件生成cs文件
    • 生成操作设置为第页
    • 我已经添加了所有必要的参考资料
    • 用户控件生成工具设置为MSBuild:Compile
    编辑:

    我发现了它可能无法编译的地方:

    如果我注释掉除构造函数之外的所有代码,将生成usercontrol的g.cs文件,但会出现错误:

    错误2命名空间“Microsoft”中不存在类型或命名空间名称“Windows”(是否缺少程序集引用?)

    这来自g.C.的这一部分

    using Microsoft.Windows.Themes;
    

    你知道为什么会这样吗?

    我想你没有正确设置项目。我建议查看WPF应用程序的设置,例如引用,并将它们复制到库中。用户控件的生成工具是否设置为MSBuild:Compile?

    是否已检查添加到新项目的现有文件的命名空间?我可以想象存在不一致或不同的名称空间不适合,或者xaml中的名称空间与类定义中的名称空间不匹配。

    事实上,我已经解决了这个问题,我不知道为什么会出现这种情况,但我知道如何解决它

    在我的UserControl中,我有以下引用:

    xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"
    

    这可能是由Blend添加的,当时我正在设计一些标准控件的样式。当我处于设计模式时,我不会收到任何错误消息。因此,当我编译userControl时,我会得到生成InitializeComponent方法的g.cs文件。然后在那里我得到了对
    Microsoft.Windows.Themes的引用,因为我在xaml中有这个引用(见上文)。当它编译g.cs文件时,它会失败,因此不会生成g.cs文件,也不存在InitializeComponent方法,这会导致该错误。

    我已添加了所有必需的引用。并且构建工具设置为MSBuild:CompileThey do match,它是在上一个项目中编译的,从那时起我就没有更改过名称空间,并且我已经多次检查了它。是一样的。
    xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"