深入浅出WPF-05.控件与布局
控件与布局
突出特点:1、专门的UI设计语言XAML,无需像MFC那样使用编程语言设计UI。2、前几代在UI和数据交互方面是由消息Message到控件事件,始终是把UI控件放在主导位置而把数据放在了次要位置,用UI驱动数据的改变。WPF在事件驱动的基础上引入了数据驱动的概念,让数据作为主导位置。UI的主要作用就是数据展示,故而数据是核心,WPF正是这样的。
以后的WPF学习,一定要树立一种观念,UI是作为数据的展示,数据才是核心。UI要由数据进行驱动,UI只是数据的表达。
在WPF中,何为控件?我们把那些能够展示数据、响应用户操作的UI元素称之为控件。控件所展示的数据,称之为控件的数据内容,控件在响应用户的操作后,会执行自己的一些方法或者以事件Event的形式通知应用程序,这些称之为控件的行为或者算法内容。所以,控件就是数据和行为的载体,而无需强调调试的长相。
我们将常用的控件大致分为6类:
布局控件:可以容纳多个控件或者嵌套其他布局控件,比如Grid、StackPanel、DockPanel等。他们共同的父类是Panel
内容控件:只能容纳一个其他控件或者布局控件作为他的内容。Window、Button等。他们共同的父类是ContentControl,只能由单一元素充当其内容
<StackPanel>
<Button Width="163" Height="93" Click="Button_Click_1" Margin="10">
<Button Content="Button" Width="91" Height="42" Click="Button_Click"/>
</Button>
<Button Width="163" Height="93" Click="Button_Click_1" Margin="10">
<TextBlock Text="TextBlock"/>
</Button>
<Button Width="163" Height="93" Margin="10">
<Image Source="avatar2.png"/>
</Button>
</StackPanel>
Button控件中只能包含一个其他控件,如果需要包含多个,需要将多个控件放入一个布局中进行实现。
<Button Width="163" Height="93" Margin="10">
<StackPanel Orientation="Horizontal">
<TextBlock Text="TextBlock" VerticalAlignment="Center"/>
<Image Source="avatar2.png"/>
</StackPanel>
</Button>
带标题的内容控件:相当于一个内容控件,但是可以加一个标题Header。标题部分也可以是一个控件或者布局。共同的父类HeaderedContentControl。内容属性为Content和Header。无论是Content还是Header,都只能容纳一个元素作为其内容。
Expander,GroupBox,HeaderedContentControl,TabItem
条目控件:可现实一列数据,一般情况下这列的数据类型相同。ListBox,ComboBox,主要用于展示集合类型的数据,共同父类ItemsControl。内容属性是Items或者ItemSource。每种ItemsControl都有自己对应的条目容器Item Container。
Menu(MenuItem),MenuBase,ContextMenu(MenuItem),ComboBox(ComboBoxItem),ItemsControl,ListBox(ListBoxItem),ListView(ListViewItem),Tabcontrol(TabItem),TreeView(TreeViewItem),Selector,StatusBar(StatusBarItem)
带标题的条目控件:相当于在条目控件上增加了一个标题显示区域。这类控件往往用于显示层级关系的数据。TreeViewItem、MenuItem、ToolBar三种,结点显示在Header区域,子级结点则显示在条目控件区域。共同父类HeaderedItemsControl。内容属性:Items,ItemsSource,Header
特殊内容控件:这些控件比较独立
起装饰作用的Decorator族。Border可以为一组控件增加边框。ViewBox可以对组织在一起的内容进行自由缩放。内容属性是Child,只能由单以元素充当内容。
TextBlock可以容纳自由控制格式的文本,只能显示不能编辑。TextBox只能容纳一个字符串,不需要太多的格式显示,但是可以编辑。
Image容纳图片。
Shape族:用于装饰,没有具体的内容。使用属性Fill进行填充,使用Stroke属性设置边线。
Panel族:主要控制UI的布局,内容可以是多个元素。Canvas,Grid,DockPanel,TabPanel,UniformGrid,WrapPanel等
深入浅出WPF-05.控件与布局的更多相关文章
- WPF 基础 - 控件与布局
1. 前言 1. 数据驱动 UI WPF 是数据核心.主动的,UI 从属数据并表达数据.是被动的: 不再是 UI 驱动数据,而是数据驱动 UI: 2. 控件的定义 控件.数据内容.行为(控件响应用户操 ...
- 《深入浅出WPF》学习总结之控件与布局
一.控件到底是什么 控件的本质是“数据+算法”——用户输入原始数据,算法处理原始数据并得到结果数据.问题就在于程序如何将结果数据展示给用户.同样一组数据,你可以使用LED阵列显示出来,或者是以命令行模 ...
- WPF 的内部世界(控件与布局)
目录 一.控件与布局 前言 为什么要写WPF呢? 我一开始算是比较抵触WPF的,因为用的人少吗.感觉都是窗体应用能和Winform有什么区别.可是我错了,非常感谢我的讲师,给我推荐刘铁猛的<深入 ...
- 创建 WPF 工具箱控件
创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...
- Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件
最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...
- WPF常用控件应用demo
WPF常用控件应用demo 一.Demo 1.Demo截图如下: 2.demo实现过程 总体布局:因放大缩小窗体,控件很根据空间是否足够改变布局,故用WrapPanel布局. <ScrollVi ...
- WPF 分页控件 WPF 多线程 BackgroundWorker
WPF 分页控件 WPF 多线程 BackgroundWorker 大家好,好久没有发表一篇像样的博客了,最近的开发实在头疼,很多东西无从下口,需求没完没了,更要命的是公司的开发从来不走正规流程啊, ...
- WPF第三方控件盘点
WPF统一的编程模型.语言和框架,实现了界面设计人员和开发人员工作可以分离的境界,鉴于WPF强大的优势,且一直是开发者关注的地方,下面和大家分享基于WPF项目开发需要用到的第三方控件,包括业界最受好评 ...
- WPF 设置控件阴影后,引发的Y轴位置变化问题
原文:WPF 设置控件阴影后,引发的Y轴位置变化问题 背景 最近遇到一个动画执行时,文本位置变化的问题.如下图: 如果你仔细看的话,当星星变小时,文本往下降了几个像素. 貌似有点莫名其妙,因为控件之间 ...
随机推荐
- 个人笔记-----Vue中多个router-view应用
单个 <router-view/> 和多个 <router-view/> 的区别,单个 <router-view/> 只是一个区域的变化,不需要设置name属性,在 ...
- ANSI C说明了三个用于存储空间动态分配的函数
1.1 malloc的全称是memory allocation,中文叫动态内存分配.原型:extern void *malloc(unsigned int num_bytes);说明:分配长度为num ...
- LeetCode入门指南 之 二叉树
二叉树的遍历 递归: void traverse (TreeNode root) { if (root == null) { return null; } //前序遍历位置 traverse(root ...
- 原生 JS 与 jQuery 中的 AJAX
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更 ...
- springcloud超时重试机制的先后顺序
https://blog.csdn.net/zzzgd_666/article/details/83314833
- Springboot 整合通用mapper和pagehelper展示分页数据(附github源码)
简介 springboot 设计目的就是为了加速开发,减少xml的配置.如果你不想写配置文件只需要在配置文件添加相对应的配置就能快速的启动的程序. 通用mapp 通用mapper只支持对单表的操作,对 ...
- Sentry Web 性能监控 - Web Vitals
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Djangoform组件——ModelForm的基本使用
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...
- vue-cli坑比系列
Error loading saved preferences: ~/.vuerc may be corrupted or have syntax errors. Please fix/delete ...
- Pytest 系列(29)- 详解 allure.dynamic 动态生成功能
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 @allure.title ...