天天看点

XAML控件(control)一XAML中控件及其类别

  • 实际上XAML的开发应该是在blend里面完成,在vs中精调。
  • 一XAML中控件及其类别

    关于控件(control)的概念

    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布局(Layout)

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

    初学者的常见错误,滥用Margin,而不是使用布局元素实现布局!(现在就是这个样子,惭愧)