【发布时间】:2013-07-15 07:42:01
【问题描述】:
我对此进行了彻底的研究,发现了this、this 和this。我发现的所有帮助页面都说的差不多。这不是很复杂,所以我很确定我做对了,但是幕后文件都变得混乱了。以下三个错误中的任何一个都会出现,只有错误 1 和 2 会阻止它运行。
错误 1: 如果在我运行 XAML 文件时在编辑器中打开它,那么只有该文件的错误是: 名称空间“clr-namespace:Addin”中不存在名称“Option”
错误 2: 如果 XAML 文件在我运行时未在编辑器中打开,则错误为: “Addin.Addin”类型中不存在类型名称“Option”。 ...在所有 g.cs 文件上。
错误 3:与 1 完全相同,但在不同的对象上。当我运行它时,它确实解决了,不会导致错误,并且完全按预期工作。
就好像 VS 确信该类不存在,但只在涉及继承时才真正关心。
我只想说我很困惑,任何关于可能出错的见解都将不胜感激。另外,我正在使用 VS 2012 Professional,我的一些同事似乎认为它至少是错误 3 的罪魁祸首。
EAC1O1.xaml.cs
namespace Addin
{
public partial class EAC1O1 : Option
{
public EAC1O1()
{
InitializeComponent();
}
}
}
选项.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 {
【问题讨论】:
-
天啊,你想做什么?? O.O
-
.cs 和 .xaml 文件继承自抽象类 Option(它有许多属性和方法适用于实现它们的类),但它们本身需要位于不同的文件中非常不同且复杂的 GUI,其中 Option 继承自 UserControl。真的很简单。 :)
-
老兄,您将逻辑和功能放在视图中,它确实属于
not。请在此处展示您要实现的目标,我可以告诉您在 WPF 中执行此操作的正确方法。 -
有一个全屏 GUI 窗口,通过一堆不相关的 GUI 控件,最终将向用户显示数千个 UserControl 中的一个。每一个都是非常复杂数据的计算器,它们在设计、数据类型和功能上可能会有很大差异。因此需要可以在设计器中编码然后插入的单独文件。但是,它们都有一些共同的属性,例如 GetPoints() 或 .CalcName。除非我遗漏了什么,否则视图中唯一的逻辑/功能是所有计算器共有的极少数属性/方法。
-
“它有许多属性和方法适用于实现它们的那些类”......可能是混淆的来源。我应该说几句。
标签: wpf xaml inheritance user-controls partial-classes