我在wpf windows中调用基础构造函数时遇到了麻烦:
public class TemplateWindow : Window //Template window class
{
public TemplateWindow (int no)
{
}
}
public partial class MainView : TemplateWindow
{
public MainView() : base(1) //error here
{
InitializeComponent();
}
}
它在指定的位置给出了一个错误,因为它显然试图用base调用Window构造函数。 MainView类是xaml窗口的代码。
然而,当我测试下面的问题时,它的效果非常好。
class A //Base Class
{
public A() { }
}
class B : A
{
public B(int no) { }
}
partial class C : B
{
public C() : base(1) { }
}
我做错了什么?
答案 0 :(得分:1)
您在XAML中定义了MainView
类,不是吗?它可能是这样的:
<Window x:Class="MyNamespace.MainView" ... >
...
</Window>
请注意开头的大Window
字词。它告诉编译器您希望此XAML生成名为MyNamespace.MainView
的类,并且您希望它继承自Window
。这就是编译器的作用:它很乐意生成你的类并使它继承自Window
。右键单击InitializeComponent
字,然后选择“转到定义”。这将带您进入自动生成的文件,您将能够看到该类。
现在,如果您希望MainView
继承TemplateWindow
,您只需在XAML中这样说:
<my:TemplateWindow
xmlns:my="MyNamespace"
x:Class="MyNamespace.MainView" ... >
...
</my:TemplateWindow>
但这会给你另一个问题:现在,突然之间,你无法使用视觉设计师。
那是因为设计人员无法创建TemplateWindow
类的实例进行编辑。为什么?好吧,因为TemplateWindow
当然没有默认的构造函数!
因此,要使用此类内容,您只需在TemplateWindow
中定义两个构造函数 - 一个默认值,另一个接受int
。
答案 1 :(得分:0)