是否可以在C#的WPF工具包(或者其他任何WPF类)中扩展“Page”类? 我试图做的事情:
public class ExtendedPage : Page{
protected void doStuff(){
// lots of joy n pleasure
}
}
public partial class RandomWindow : ExtendedPage{
private void randomMethod(){
doStuff(); // causes error
}
}
我问的原因非常明显:在扩展Page-class(ExtendedPage)之后,子类(RandomWindow)无法访问其基类的方法。 这是(至少是我的猜测)由RandomWindow偏离的情况引起的。由于这个类不幸是由WPF生成的(链接到相应的* .xaml),我无法找到部分类的其他部分。
这个问题可能导致一个非常明显的答案,让我看起来像一个完全白痴,但显然我无法弄清楚。我可能会补充一点,我刚刚开始使用C#,我的编程起源是Java。
确切的错误消息是“'type'的部分声明不能指定不同的基类”(CS0263)。
作为对其中一条评论的回应:* .xaml中的“Page”声明似乎生成了一个代码隐藏文件,其基类是“Page”(而不是ExtendedPage)。改变这似乎也不起作用,编译器抱怨没有找到类型的ExtendedPage。
<Page x:Class="...RandomWindow" ... />
// to
<src:ExtendedPage x:class="...RandomWindow"
xlmns:src="...ExtendedPage" />
答案 0 :(得分:5)
'type'的部分声明不能指定不同的基类
嗯,那个人很简单,你可能在某处看起来像这样的XAML:
<Page x:Class="MyApp.MyNamespace.RandomWindow" ....>
隐式指定Page
作为基础,但您需要:
<local:ExtendedPage x:Class="MyApp.MyNamespace.RandomWindow"
xmlns:local="clr-namespace:MyApp.NSContainingExtendedPage"
...>
答案 1 :(得分:0)
扩展Page-class(ExtendedPage)后的子类 (RandomWindow)无法访问其基础
的方法
这是错误的。如果可能的话,扩展类可以让您访问基类的所有public
和protected
成员。
部分仅与不同文件中类的代码的分布有关,但与之后的真实无关汇编。编译后,它变成一个单一的固体类型。
你在这里发布的内容应该可以正常使用。