【问题标题】:VB.Net interfaces and abstract classes: wpf windows sharing common functionalityVB.Net 接口和抽象类:wpf windows 共享通用功能
【发布时间】:2013-03-22 08:24:10
【问题描述】:

总的来说,我是 VB.Net 和 .Net 的新手。 我正在使用 wpf windows 构建一个调查应用程序。其中许多窗口具有相似的功能和相似的类成员。我以为我可以使用接口和抽象类来定义和部分实现通用功能。然后,在 WPF 窗口的 Classes 中实现并继承它。但是,当“wpf”类继承抽象类时,它就失去了对所有常规子例程的访问权。我意识到我在这里犯了一些根本性的错误。谁能解释我如何实现通用功能,定义通用成员,然后在不同的 WPF 窗口中使用它?

【问题讨论】:

  • “它失去了对所有常规子程序的访问权”到底是什么意思?当您继承一个类时,您应该获得继承类的功能以及您在继承类中添加的任何其他功能。
  • 这正是我所期望的,但是“wpf 类”在继承我的抽象类后失去了对任何 Window 子例程的访问权限。而且我看不到“wpf 类”从哪里获得这些 Window 子例程。我的目标是定义一些常见的子例程,以及这些子例程的一些实现,以便以后在我的所有 WPF Windows 中使用。

标签: wpf vb.net wpf-controls


【解决方案1】:

我不完全确定我是否遵循您的问题,但是如果您有一个 WPF 窗口继承一个类,该类本身至少不是从 WPF Window 派生的,或者将窗口类的成员隐藏到其后代,您将失去 WPF 窗口类的功能。

假设我有类MyWPFWindowClass,它继承自System.Windows.Window,因此具有窗口的所有方法。

如果您现在让它继承自一个新类 MyWPFWindowClassBase,则 MyWPFWindowClass 将改为拥有 MyWPFWindowClassBase 的所有方法。

现在,除非MyWPFWindowClassBase 本身继承自System.Windows.Window 并因此具有窗口的所有方法,否则MyWPFWindowClass 或派生自MyWPFWindowClassBase 的任何其他类中将没有这些方法。

我希望这确实让它更清楚一点?

查看 this link 以帮助您开始在 .Net 中进行继承。

【讨论】:

  • 这看起来就像我的 wpf 类从抽象类继承时发生的事情。所有窗口都被覆盖。我的困惑是因为我没有看到 wpf .xaml 文件下的类显式继承 Window。 wpf 类在哪里获得 Window 功能?为了我的目的,我应该让抽象类继承Window,然后“wpf class”继承那个抽象类吗?它会起作用吗?谢谢。
  • 不幸的是,我对 WPF 本身没有太多经验(我主要还是 Winforms...),但我认为这篇文章会对您有所帮助weblogs.asp.net/psheriff/archive/2009/11/02/…
  • 否则,您可以转到窗口的代码隐藏文件并告诉它继承您的类... : Inherit MyClass。您将在.g.vb 文件中收到错误消息。如果您将其更改为从同一个类继承,它应该可以工作(我刚刚尝试过)。如果您的抽象类从 Window 继承,然后向其添加自定义方法,然后让您的其他类从中继承它应该可以正常工作。不过,请确保您获得要公开的方法的访问器是正确的。
  • 我这样做的方式是,首先添加一个新窗口,然后将其设为我的 BaseClass,因此它已经从 Window 继承,并且一切都由设计人员正确完成,然后添加功能到在代码隐藏文件中或更改 xaml 以修改外观,然后将该类传递给我的所有自定义控件(如果您已经知道如何执行所有这些操作,我很抱歉这么说)。
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 2013-11-25
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
相关资源
最近更新 更多