我正在开发一个用于创建大量用户控件的项目。后来我决定将这些控件移到UserControl库中。这就是我所做的:
但是,当我尝试构建我的库时,出现以下错误:
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">
代码背后:
namespace EChart.Controls
{
public partial class EPreviewGraphSelector : UserControl
{
public EPreviewGraphSelector()
{
InitializeComponent();
}
}
}
修改
我找到了无法编译的地方:
如果我注释掉除构造函数之外的所有代码,则会生成用于我的usercontrol的g.cs文件,但是它会出现错误:
错误2命名空间“Microsoft”中不存在类型或命名空间名称“Windows”(您是否缺少程序集引用?)C:\ Projects \ eControls \ EChart \ EChart \ _ obj \ Debug \ Controls \ EPreviewGraphSelector。 g.cs 15 17 EChart
这来自g.cs
的这一部分using Microsoft.Windows.Themes;
任何想法为什么会发生这种情况?
答案 0 :(得分:1)
其实我已经卖掉了这个问题,我不知道为什么会出现这个问题,但我知道很难解决它。
在我的UserControl中,我有以下参考:
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"
这可能是Blend在我设计一些标准控件时添加的。当我处于设计模式时,我没有收到任何错误消息。因此,当我编译我的userControl时,我得到g.cs文件,其中生成了我的InitializeComponent方法。然后我得到Microsoft.Windows.Themes;
的引用,因为我在xaml中的引用(见上文)。当它编译g.cs文件时,它会失败,因此不会生成g.cs文件,也不会存在InitializeComponent方法,这会导致该错误。
答案 1 :(得分:0)
我猜你没有正确设置项目。我建议您查看WPF应用程序的设置,例如引用,并将它们复制到您的库中。用户控件的构建工具是否设置为MSBuild:Compile?
答案 2 :(得分:0)
您是否检查过已添加到新项目的现有文件的命名空间?我可以想象存在不一致或不同的命名空间,或者xaml中的命名空间与类定义中的命名空间不匹配。