扩展页面类

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)

H.B*_*.B. 6

'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)