WP8.1 UI 编程 九、控件编程

1. 控件继承关系

       UIElement

             ↑

FrameworkElement

   ↑                  ↑

Panel           Control

                    ↑      ↑

 ContentControl   ItemsControl

UIElement是具有可视化外挂并且可以处理基本输入的大多数对象的基类,但不公开构造方法,其作用就是作为Framework的基类,对UI的基础操作进行封装。

FrameworkElement扩展了UIElement,并添加布局相关方法和属性和对数据绑定的支持。由它派生的控件:TextBlock,Border,Image,MediaElement,Popup,实现一些非常基础的功能,经常作为其它控件内部封装的元素。

Panel是布局控件的基类。由它派生的控件:Canvas,Grid ,StackPanel。

Control是用户界面元素的基类,这些元素使用Template来定义其外观。由它派生的普通控件:TextBox,PasswordBox,ProgressBar,ScrollBar,Slider等,这类控件的典型特征是可以自定义或修改其数据模板。

ContentControl是包含单项内容的控件,其Content属性可以是任何Object对象,甚至是UIElement,其它类型对象将显示该对象的字符串表示形式。内容控件:ContentControl本身,以及由它派生的控件Button,RadioButton,HyperlinkButton,CheckBox,ScrollViewer。它的内部包含ContentPresenter,例如Button的:

<ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

ItemsControl是呈现集合项内容的控件,其ItemsSource属性知道为某个对象集合的引用,通过绑定的方式在ItemTemplate里呈现数据。列表控件:ItemsControl本身,以及由它派生的控件ListBox,Pivot,ListView,GridView。重要属性有Items,用于生成控件内容的集合;ItemsPanel,布局面板;ItemsSource,内容集合;ItemTemplate,每个项的DataTemplate。 

系统控件的默认样式可以用Blend查看。修改默认样式可以实现简单的自定义控件。

2. UserControl自定义控件,定义方式类似于页面,Code-Behind模式

3. 继承控件基类实现自定义控件

必须动态加载样式文件来创建控件,样式文件必须放在Themes文件夹的generic.xaml,并在控件类的构造器中设置控件默认Style。

OnApplyTemplate方法是每当调用ApplyTemplate方法时调用的,即UI元素在显示前都会调用此方法。

GetTemplateChild方法能获取具有特定x:Name属性的子控件(在Style中定义的),在OnApplyTemplate中以此来初始化。

原文地址:https://www.cnblogs.com/wylz/p/4034119.html