C# 如何使WPF页面具有公共接口
我们开发了一个类似向导的WPF应用程序,它有一个可以导航到各种页面的框架。我在单独的xaml和xaml.cs文件中定义每个页面,然后让应用程序使框架在页面之间导航 我的所有页面当前都继承自页面。我想有一个共同的界面,我所有的网页,所以我可以访问他们多态性。但是,更改页面的基类会导致编译失败,因为VisualStudio从xaml文件自动生成的文件将基类设置为页面,并且我得到一个错误,即的部分声明不能指定不同的基类 我的一个选择是添加另一个接口(例如WizardPage)并使所有类实现该接口,但这意味着每个页面都需要实现所有的intefaces函数,这很不方便,因为我希望大多数函数,对于大多数页面,都有默认的空实现 你能推荐我可以用来解决这个问题的其他方法吗C# 如何使WPF页面具有公共接口,c#,wpf,polymorphism,C#,Wpf,Polymorphism,我们开发了一个类似向导的WPF应用程序,它有一个可以导航到各种页面的框架。我在单独的xaml和xaml.cs文件中定义每个页面,然后让应用程序使框架在页面之间导航 我的所有页面当前都继承自页面。我想有一个共同的界面,我所有的网页,所以我可以访问他们多态性。但是,更改页面的基类会导致编译失败,因为VisualStudio从xaml文件自动生成的文件将基类设置为页面,并且我得到一个错误,即的部分声明不能指定不同的基类 我的一个选择是添加另一个接口(例如WizardPage)并使所有类实现该接口,但这
Thasnks
splintor制作一种适配器页面,用于扩展页面并实现WizardPage,该页面提供WizardPage方法的空实现。然后让其他页面扩展WizardPage。您也可以将xaml的根标记设置为您定义的类。 在这里,您必须从页面派生基类,然后才能从基类派生页面类
public class MyBaseClass : Page
{
.....
}
您可以从如下类派生页面类:
public partial class MyDeriveClass : MyBaseClass
{
.............
}
在您的xaml中编写
<y:MyBaseClass y="add your Namesapace here" and add other attribute of Page also like default namespace and xmlns:x>
...............
</y:MyBaseClass>
...............
但正如我所说的,我必须让我的页面为页面继承,否则我的编译会中断,因为它与自动生成的文件中为它们定义的基类不兼容。如果从从从页面继承的类继承,我看不出它会如何中断。@splintor,看看Anurag的解决方案。您必须编辑您的xaml文件以生成正确的基类。是的,我现在了解了xaml定义需要如何更改。谢谢。这就是我要找的。我还发现了在中描述的相同问题。他链接到的帖子不可用,但我使用谷歌缓存来理解我需要做什么。谢谢。我做了这里公开的事情,它是有效的,但之后我不能做类似的事情:List mylyst;mylist.add(myderivedItem)
它声称无法从derivedclass转换为基类。。这是常见的还是预期的??