控件:
    1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力。内容控件包括Lable,Button 以及ToolTip类。

内容控件是更特殊的控件类型,它们可以包含(并显示)一块内容。从技术角度来讲,内容控件是可以包含单个嵌套元素的控件。与布局容器不同的是内容控件只能包含一个子元素,而布局控件只要愿意可以包含任意多个嵌套元素。
              提示:当然,仍然可以在单个内容控件中放置大量内容-----诀窍是使用单个容器,比如,使用StackPanel面板或Grid面板来包装所有内容。例如,Window类本身是一个内容控件,显然窗口经学包含大量内容,但所有内容都包装到一个顶级容器中(这个容器通常是Grid).

  正如在第三章中所学习的,所有WPF布局容器都继承自抽象的Panel类,该类提供了对包含多个元素的支持。类似的,所有的内容控件都继承自抽象的ContentControl类

Content属性
           与Panel类提供一个Children集合来保存嵌套的元素不同,Control类添加一个Content属性,该属性只接受单一对象。Content属性支持任何类型的对象,但是可以将该属性包含的对象分为两大类,针对每一类进行不同的处理:a:未继承自UIElenment类的对象  内容控件调用这些控件的ToString()方法获取文本,然后显示该文本。
  b.继承自UIElenment类的对象 这些对象(包括所有的可视化元素,它们是WPF的组成部分)使用UIElenment.OnRender()方法在内容控件内部进行显示。
        注意:可以在内容控件中放置文本内容,国为XAML解析器会将其转换为一个字符串对象,并且使用该字符串对象来设置Content属性,但是,不能直接在一个布局容器中旋转字条串内容,反而,需要使用一个继承自UIElement的类对字条串进行包装。

Button类表示一直使用的Windows下压按钮。它添加了两个可写属性:IsCancel和IsDefault。
        如果IsCancel属性设置为true,按钮就成为窗口取消按钮,在当前窗口的任何位置如果按下Escape键,就会触发该按钮。
       如果IsDefault属性设置为true,按钮就成为默认按钮,它的行为取决于焦点在窗口中的当前位置。如果焦点位于一个非控件上,如果按下Enter键,就会触发默认按钮,但如果焦点位于另一个按钮上,当前有焦点的按钮就具有蓝色阴影,并且Enter键会触发当前按钮,而不是默认按钮。
  CheckBox控件和RadioButton控件是不同类型的按钮。它们继承自ToggleButton类,这意味着用户可以切换它们的开与关状态,即它们的开关行为。对于checkBox控件,切换到控件的开状态,意味着在其中放置一个复选标记。CheckBox类没有添加任何成员,所以CheckBox类的基本接口是在ToggleButton类中定义的,最重要的是,ToggleButton类添加了IsChecked属性。它是可空的Boolean类型。这意味着该属性可以设置为:true,false,null。显然:true=选中复选框,而false未选中,null值有点麻烦----------它表示复选框是不确定状态。

RadioButton控件  也继承ToggleButton类,并且使用相同的IsChecked属性和相同的Checked,此外它还增加了一个GroupName属性,该属性用于控制如何对单选按钮进行分组。单选按钮通常由它们的容器进行分组,这意味着如果在一 个StackPanel面板中放置三个单选按钮,那么这三个单选按钮就形成一组,而且只能选择这三个单选按钮中的一个。另一方面,如果在这两个独立的StackPanel控件中放置一个单选按钮组合,那么就有了两组相互独立的单选按钮。通过使用GroupName属性可以覆盖这一默认行为,可以使用该属性在一个容器中创建多个组,或将包含多个容器中的单选按钮创建为一组。
    2.带有标题的内容控件----------------这些控件是允许添加一个主要内容部分以及一个单独标题部分的内容控件,它们通常用于包装更大的用户界面块。这类控件包括TabItem,GroupBox以及Expander类。
    3.文件控件---------------文件控件比较少,它们允许用户输入文本,文本控件支持普通文本(Textbox),密码(PasswordBox) 以及格式化文本(RickTextBox).
    4.基于范围的控件--------------这些控件通常只关心一个属性:Value,可以使用预先规定范围内的任何数字设置该属性。例子包括Slider以及ProgressBar类。
    5日期控件---------------这类控件包含两个允许用户选择日期的控件:Calendar和DatePicker控件。

    

WPF学习系列之五(WPF控件)的更多相关文章

  1. WPF学习06:转换控件内容为可存储图片

    在图形软件中,我们经常使用到"另存为图片"的功能,本文即介绍如何将WPF控件显示内容转换为图片. , , PixelFormats.Pbgra32); bitmapRender.R ...

  2. WPF学习(一)控件的公共属性

    Visiblity控件是否可见:枚举类型:Visible表示可见.Collapsed不可见. IsEnabled:控件是否可用:bool类型. Background:背景色. FontSize:字体大 ...

  3. WPF从我炫系列4---装饰控件的用法

    这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollView ...

  4. WPF-学习笔记 动态修改控件Margin的值

    原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...

  5. WPF编游戏系列 之四 用户控件

    原文:WPF编游戏系列 之四 用户控件        在上一篇<WPF编游戏系列 之三 物品清单>中,对物品清单进行了演示,其中反复用到了同一组控件(如下图),而且 颜昌钢也指出在3.2. ...

  6. WPF 模仿 UltraEdit 文件查看器系列一 用户控件

    WPF 模仿 UltraEdit 文件查看器系列一 用户控件 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-10 章节: 起步 添加用户控件 ...

  7. WPF自定义控件(一)の控件分类

    一.什么是控件(Controls) 控件是指对数据和方法的封装.控件可以有自己的属性和方法,其中属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能.控件创建过程包括设计.开发.调试(就是所 ...

  8. 基于 WPF 平台的 ActiveReports Viewer控件

    ActiveReports 报表控件致力于为组织和个人提供最出色的报表解决方案,多年来ActiveReports已经提供了 Windows Forms.Web.Silverlight和Flash平台的 ...

  9. WPF不同线程之间的控件的访问

    原文:WPF不同线程之间的控件的访问 WPF不同线程之间的控件是不同访问的,为了能够访问其他线程之间的控件,需要用Dispatcher.Invoke执行一个新的活动即可. 例如: public voi ...

随机推荐

  1. eclipse集成tomcat改动字符集參数

    问题: 在eclipse 4.4(Luna)中集成tomcat时,直接改动原tomcat文件夹中的配置文件,不起作用. 有时.我们会修改字符集參数为utf-8,以解决中文乱码问题,修改之后依旧乱码-- ...

  2. 【WPF】ComboBox:根据绑定选取、设置固定集合中的值

    问题场景 我有一个对象,里面有一个属性叫Limit,int类型.虽然int可取的范围很大,我想要在用户界面上限制Limit可取的值,暂且限制为5.10.15.20. 所以ComboBox绑定不是绑定常 ...

  3. Android 红色小圆球提示气泡 BadgeView

    今天给大家分享两个实用有简单的一个小圆球提示气泡: BadgeView 参考地址: https://github.com/qstumn/BadgeView;       个人地址:http://git ...

  4. c++动态绑定的技术实现

    1 什么是动态绑定 有一个基类,两个派生类,基类有一个virtual函数,两个派生类都覆盖了这个虚函数.现在有一个基类的指针或者引用,当该基类指针或者引用指向不同的派生类对象时,调用该虚函数,那么最终 ...

  5. Linux下监视GPU、CPU的使用情况

    1.在运行Tensorflow等程序时会使用到NVIDIA的GPU,所以在程序运行时需要监控GPU的运行情况 使用 nvidia-smi 命令 ,显示如下: nvidia-smi 显示解读: GPU: ...

  6. angularJs-HelloWorld

    AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法. 1使用双大括号{{ ...

  7. Redmine后台修改admin密码

    Redmine后台修改admin密码 进入redmine安装目录,假设redmine安装在/var/www/html/redmine/目录下. cd /var/www/html/redmine/scr ...

  8. mvc Bundling 学习记录(一)

    参考博客:http://www.cnblogs.com/xwgli/p/3296809.html 这里要详细记录的是对于现有MVC项目进行Bundling功能 1  如果没有System.Web.Op ...

  9. Codeforces Round #553 (Div. 2) 题解

    昨晚深夜修仙上紫记,虽然不错还是很有遗憾的. A. Maxim and Biology 看完就会做的题,然而手速跟不上 #include<cstdio> #include<iostr ...

  10. nginx应用 突破高并发的性能优化

    摘自:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题. ...