【发布时间】:2011-12-07 10:22:39
【问题描述】:
我想做一个定制的窗台。所以我做了一个继承自Window的自定义窗口。
例如:
public class MyWindowBase : Window
{
...
...
}
我想为自己的目的覆盖超类 Window 的不同画笔。 根据我以前的经验,要覆盖超类中没有抽象或虚拟的方法/属性需要关键字“new”。
例如:
public new void DoSomething() { ........ base.DoSomething() ....... }
public new string SomeText { get { ... } set {......} }
它在我以前的工作中有效。
但是,在这个处理 WPF Window 的时候,它不起作用。
我尝试覆盖超类Window的不同Brushes如下:
public new Brush BorderBrush
{
get { ... }
set { myBorderBrush = value; base.BorderBrush = null }
}
public new Brush Background
{
get { ... }
set { myBackground = value; base.Backgound = null; }
}
.....
.....
.....
我尝试在MyWindowBase中改变上述Brushes的值,它只是改变超类Window的值,并没有改变myBorderBrush和myBackground的值。
那么,如何覆盖超类Window的方法和属性呢?
实际上,我想覆盖基础背景,使其永远为空或透明,但更改后的值将应用于我自己的自定义背景。
非常感谢!
【问题讨论】:
-
尝试使用“覆盖”而不是“新”。
标签: wpf inheritance window