控件总结..

WPF把能展示数据、响应用户操作的UI元素称为控件(Control),控件的概念有极大的延伸。控件的概念在WPF有了很大的突破和调整,这样的调整主要来自于WPF设计理念的改变—-以数据为驱动。
引述一段原话:

之前几代的GUI方法论(MFC、windows Form)只能使用编程语言UI设计而WPF有专门用于UI设计的XAML

前几代在UI与数据交互方面是由windows消息到控件事件一脉相承,始终是把UI控件放在主导地位而把数据放在被动地位,用UI来驱动数据的改变,WPF在事件驱动的基础上引入了数据驱动的理念,让数据重归核心地位而让UI回归数据表达者的位置。

我的理解是:

传统在设计UI时,我们的想法主要是:事件之间的联系与改变,比如点击按钮,弹出对话框,写完记录,提交数据,控件之间的交流与逻辑占主导。而现在,控件为了展示和操作数据,逻辑应该转为以数据为中心,驱动控件。具体就是:这个集合数据用什么控件来展示,如果用户操作了数据,UI应该发生什么变化,如何传递这些数据。说白了,实际上是增加了INotifyPropertyChanged以及binding等主动更新数据的接口,增加了XAML设计UI来完全分离逻辑和UI。

粗略而言,日常工作中打交道最多的控件无外乎6类,即:

(1) 布局控件:可以多个控件或其他布局控件,用于在UI上组织和排列控件。Grid、StackPanel、DockPanel等控件都属于此类,他们拥有共同的父类panel。
(2) 内容控件:只能容纳一个其他控件作为内容。由于这个控件可以是布局控件,所以可以极为方便的规划复杂的内容。共同父类ContentControl。
(3)带标题内容控件:相当于一个内容控件,但是可以加一个标题(Header),标题部分亦可容纳一个控件或布局。共同父类HeaderedContentControl。
(4)条目控件:可以显示一列数据,一般情况下这列数据的类型相同。此类控件在显示集合类型数据方面功能非常强大。共同基类为ItemsControl。
(5)带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、MenuItem都属于此类控件。这类控件往往用于显示层级关系数据,结点显示在其Header区域,子级结点则显示在其条目区。此类控件的共同基类是HeaderedItemsControl。
(6)特殊内容控件:比如TextBox容纳可以字符串、TextBlock可以容纳可自由控制格式的文本、Image容纳图片类型数据……这类控件相对比较独立。

关于内容属性的概念:

每一个控件都有自己的内容,可以把控件想象成容器,控件通过自己的某个属性引用着作为其内容的对象,这个属性称为内容属性(content property)。”内容属性”是个统称,具体到每种控件上,内容属性有自己确切的名字—-有的直接叫Content,有的叫Child;有些控件的内容可以是集合,其内容属性有叫Items或Children的。

UI布局

每个布局元素都有自己的特点,即有自己的优点和长处,也有自己的缺点和短处。一定要记清楚每个元素的特点并灵活使用,切莫对每个布局都无所不用其极。选择合适的布局元素,将会极大地简化编程,反之将会被迫实现一些布局控件原本已经有的功能。另外,设计静态布局的时候也不能一味地追求简单,如果各静态布局间还有动画作为联系,就还需要考虑与动画设计的兼容性。

初学者的常见错误,滥用Margin,而不是使用布局元素实现布局!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值