6

是否可以扩展 C# 的 WPF 工具包(或任何其他 WPF 类)中的“页面”类?我试图做的事情:

public class ExtendedPage : Page{
   protected void doStuff(){
      // lots of joy n pleasure
   }
}

public partial class RandomWindow : ExtendedPage{
   private void randomMethod(){
      doStuff(); // causes error
   }
}

我问的原因很明显:在扩展页面类 (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" />
4

2 回答 2

7

'type' 的部分声明不得指定不同的基类

好吧,这很简单,您可能在某处有一个 XAML,如下所示:

<Page x:Class="MyApp.MyNamespace.RandomWindow" ....>

但是,隐式指定 aPage作为基础,您需要:

<local:ExtendedPage x:Class="MyApp.MyNamespace.RandomWindow"
                    xmlns:local="clr-namespace:MyApp.NSContainingExtendedPage"
                    ...>
于 2012-08-29T09:52:24.113 回答
0

扩展页面类 (ExtendedPage) 后,子类 (RandomWindow) 无法访问其基类的方法

这是错误的。如果可能的话,扩展一个类可以让你访问基类的所有public成员protected

部分只与类的代码在不同文件中的分布有关,与编译后的真实呈现无关。编译后,它成为一种单一且坚固的类型。

您在此处发布的内容应该可以正常工作。

于 2012-08-29T09:35:06.413 回答