UIElementCollection

UIElementCollection是WPF中用于描述元素间关系的重要概念,它参与逻辑树与视图树的构建。逻辑树负责依赖属性继承、资源引用、事件传递等,而视图树关注元素的显示、布局、透明度等。UIElementCollection不仅用于Panel的Childrend属性,还能方便地管理和组织元素的可视与逻辑子元素关系。
摘要由CSDN通过智能技术生成

逻辑树:

逻辑树描述的是用户界面元素之间的关系,它主要负责:

  • 传承依赖属性的值
  • 设定动态资源的引用
  • 为绑定查询元素的名称
  • 传递路由事件

视图树:

视图树包括每一个逻辑元素的模板中的所有视图元素。它的责任是:

  • 显示视图元素
  • 设定元素的透明度
  • 设定元素的布局和渲染变化
  • 设定元素的可用(IsEnable)属性
  • 做命中测试
  • 关联资源(寻根)

Panel类的Childrend属性的类型是UIElementCollection


Panel类暴露了一个类型为UIElement的公有属性“Children”。Panel类重写了VisualChildrenCount属性和GetVisualChild()方法,将Children集合中的成员作为它的可视子元素返回。Panel也使用重写的GetVisualChild()方法为Children集合中的成员提供z-ordering。
public abstract class Panel : FrameworkElement, IAddChild
{
    ......
    private UIElementCollection _uiElementCollection;
    ......
    protected internal UIElementCollection InternalChildren
    {
	get
	{
	        this.VerifyBoundState();
	        if (this.IsItemsHost)
		{
			this.EnsureGenerator();
		}
		else if (this._uiElementCollection == null)
		{
			this.EnsureEmptyChildren(this);
		}
		return this._uiElementCollection;
	}
     }
      ......
      protected override int VisualChildrenCount
      {
	get
	{
		if (this._uiElementCollection == null)
		{
			return 0;
		}
		return this._uiElementCollection.Count;
	}
      }
      protected override Visual GetVisualChild(int index)
	{
		if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值