WPF中的Element

    相信我们都做过很多“自定义控件”(Custom Control)但是在WPF中,element和控件是有区别的。我们可以通过使用自定义的element来创建自定义的控件。建立自定义Element一般是通过继承自FrameworkElement,当建立自定义控件时,一般是通过继承自Control。
    面对设计新的element时,我们需要考虑:到底是继承自FrameworkElement还是继承自Control?我们可以先看我们的需要,Control比FrameworkElement多了字体FontStyle、内容对齐ContentAlign以及焦点等属性。
    自定义element类不应该随便用public property来定义自己想要的尺寸。自定义element类别也不应该设定其Width、Height、MinWidth、MaxWidth、MinHeight或MaxHeight等Property,这些Property是给类别的消费者(element的调用者、实例化的人)使用的。当自定义的element需要“想要的尺寸”时,做法一般是通过重写FrameworkElement定义的MeasureOverride方法。我们建立的自定义Element一般都有孩子,为了容纳这些孩子,类通常会override一个property和4个方法,这5者分别是:
     1、VisualChildrenCount只读属性。
     2、GetVisualChild(int index)通过索引值返回该索引对应的孩子,从0开始。
     3、MeasureOverride(Size sizeAvailable)计算想要的尺寸。
     4、ArrangeOverride(Size sizeFinal)计算Element的尺寸,通过调用每个孩子的Arrange方法。Arrange方法指定孩子相对于父亲的位置和尺寸。
     5、OnRender(DrawingContext dc),绘制Element及其孩子。不管element的OnRender绘制什么,孩子们都会出现在更上面。
     MeasureOverride、ArrangeOverride、OnRender的调用,会依照这样的次序先后发生。也就意味着前面的发生调用了,后面的必然会依次发生调用。 但是后面的调用不一定要引发前面的方法调用。

转载于:https://www.cnblogs.com/dequan-lee/archive/2008/06/19/1225713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值