【发布时间】:2016-08-03 20:39:27
【问题描述】:
假设我想创建一个专门的 wpf 控件“YellowTextBox”。它与普通的 TextBox 相同,但会是……黄色的!好的,我去代码:
public class YellowTextBox: TextBox
{
}
现在,显而易见的部分,我希望它是黄色的......
this.Background = Brushes.Yellow;
我把那行代码放在哪里?在构造函数中?在 OnInitialized 覆盖? OnLoaded 等...
有一些正确(或更好)的地方可以放置那行代码吗?
编辑:
我知道我可以通过样式来做到这一点,我的问题更像是一种“OOP”方式,它可以是任何其他类型的属性或字段,不完全是背景颜色, selected 属性只是一个例子:/
【问题讨论】:
-
你想通过样式来做到这一点。样式应应用于您的文本框。除非您需要以某种基本方式更改它的工作方式,否则无需从 TextBox 继承。
-
谢谢,@briantyler,我编辑以澄清我的问题
-
如果达斯维达站在你身后让你做错了,在构造函数中做错了。
-
您应该需要很少的(如果有的话)初始化代码,因为您应该为任何需要它的东西指定合理的默认值。除此之外,坚持自定义控件创建的既定规则,基本不会因为它是 WPF 而改变太多。请注意初始化的内容,因为您不想在可能会在外部应用的样式上大吃一惊。
-
@ClickOk 构造函数先于样式和模板的应用,所以在这种情况下,如果 Vader 站在您身后,每次您编辑任何 XAML 时都会让您窒息。良好的 WPF 做法是允许代码的使用者尽可能多地修改它。