我对此进行了彻底的研究,找到了this,this和this。我发现的所有帮助页面说的几乎都是一样的。它并不是很复杂,所以我很确定我做得对,但幕后文件却让人感到困惑。显示以下三个错误中的任何一个,只有错误1和2使其无法运行。
错误1: 如果在运行XAML文件时在编辑器中打开了XAML文件,那么仅该文件的错误是: 名称“Option”在命名空间“clr-namespace:Addin”
中不存在错误2: 如果运行时XAML文件未在编辑器中打开,则错误为: “Addin.Addin”类型中不存在类型名称“选项”。 ...在所有g.cs文件上。
错误3:与1完全相同,但在不同的对象上。当我运行它时,它确实解决了,没有错误,并且完全按照预期的方式工作。
它好像VS确信该类不存在但只是在涉及继承时才真正关心。
我只想说我感到困惑,并且对于可能出现的问题的任何见解都会非常感激。此外,我正在使用VS 2012 Professional,我的一些同事似乎认为至少是错误3的罪魁祸首。
EAC1O1.xaml.cs
namespace Addin
{
public partial class EAC1O1 : Option
{
public EAC1O1()
{
InitializeComponent();
}
}
}
Option.cs
namespace Addin
{
public abstract class Option : UserControl
{
EAC1O1.xaml
<local:Option x:Class="Addin.EAC1O1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Addin"
mc:Ignorable="d" >
<DockPanel>
</DockPanel>
</local:Option>
EAC1O1.g.cs
namespace Addin{
/// <summary>
/// EAC1O1
/// </summary>
public partial class EAC1O1 : Addin.Option, System.Windows.Markup.IComponentConnector {
答案 0 :(得分:0)
您可能会尝试让您的基础Option
课程不是抽象的。设计人员的一部分依赖于能够创建在XAML标记中使用的类和/或基类的实例。
答案 1 :(得分:0)
该解决方案最终成为Visual Studio 2012中的一个错误。我通过两种方法展示了这一点。
方法一: 我将Option类分成了一个不同的程序集(类库),现在它的工作方式与编写完全相同,只是更改名称空间。
方法二: coleague在MS VS 2010中设置了相同的项目,它也运行得很好。
MS VS BUG#794312