ott*_*uit 6 c# polymorphism wpf inheritance xaml
是否可以在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
}
}
Run Code Online (Sandbox Code Playgroud)
我问的原因很明显:在扩展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" />
Run Code Online (Sandbox Code Playgroud)
'type'的部分声明不能指定不同的基类
好吧,那个人很简单,你可能有一个XAML,看起来像这样:
<Page x:Class="MyApp.MyNamespace.RandomWindow" ....>
Run Code Online (Sandbox Code Playgroud)
Page然而,隐式指定a 作为基础,您需要:
<local:ExtendedPage x:Class="MyApp.MyNamespace.RandomWindow"
xmlns:local="clr-namespace:MyApp.NSContainingExtendedPage"
...>
Run Code Online (Sandbox Code Playgroud)