控件与布局

news/2024/9/18 8:52:56/文章来源:https://www.cnblogs.com/guoxu486/p/18374624

1.控件的分类:主要要6大类

  一.布局控件:可以容纳多个控件或者嵌套其他布局控件,用于在UI上组织和排列控件。Grid、StackPanel、DockPanel等都属于此类,他们拥有共同的父类Panel

 二.内容控件:只能容纳一个其他控件或者布局控件作为他的内容。Window、Button等都属于此类,因为只能容纳一个控件做为内容,所以经常借助布局控件来规划其内容,他们共同的父类ContenControl;

 三.带标题内容控件:相当于一个内容控件,但是可以加一个标题,标题部分亦可容纳一个控件或布局。GropBox、TabItem等都属于此类,他们共同的父类是HeaderedContentControl.

 四.条目控件:可以显示一列数据,一般情况下这列数据的类型相同。此类控件包括ListBox、ComboBox等,他们共同的基类是ItemsControl;

 五.带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、MenuItem都属于此类,他们共同的基类是HeaderedItemControl;

 六:特殊内容控件:比如TextBox容纳的是字符串、TextBlock可以容纳可自由控制格式的文本、Image容纳图片类型数据;

派生如下:

 

2.ContendControl族:只能由单一元素充当其内容

例如Button,当中只能有一个元素

 <StackPanel><Button Margin="5"><TextBox Text="Hello"/></Button></StackPanel>

3.HeaderedContentControl族:除了用于显示主体内容外,还具有一个显示标题的区域

 <Grid><GroupBox Margin="10" BorderBrush="Gray"><GroupBox.Header><TextBox Text="header"/></GroupBox.Header><TextBlock TextWrapping="WrapWithOverflow" Margin="10" Text= "nihao"/></GroupBox></Grid>

4.ItemsControl族:用于显示列表化的数据

控件作为元素如下:

 <Grid><ListBox Margin="5"><CheckBox x:Name="checkBoxTim" Content="Tim"/><CheckBox x:Name="checkBoxTom" Content="Tom"/><CheckBox x:Name="checkBoxBruce" Content="Bruce"/><Button x:Name="ButtonMess" Content="Mess"/><Button x:Name="buttonOwen" Content="Owen"/><Button x:Name="buttonVictor" Content="Victor"/></ListBox></Grid>

数据作为元素如下:

 /// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public static string WindowTitle = "山高月小";public static string ShowText { get { return "水落石出"; } }List<Employee> empList = new List<Employee>(){new Employee(){Id = 1,Name = "Time",Age = 30},new Employee(){Id = 2,Name = "Tom",Age = 26},new Employee(){Id = 3,Name = "Guo",Age = 39},};public MainWindow(){InitializeComponent();this.listBoxEmplyee.DisplayMemberPath = "Name";this.listBoxEmplyee.SelectedValuePath = "Id";this.listBoxEmplyee.ItemsSource = empList;}}

 5.TextBlock和TextBox:TextBlock只能显示文本,不能编辑,所以又称静态文本。TextBox则允许用户编辑其中的内容

6.Panel族: Grid(网格) StackPanel(栈式面板)  Canvas(画布)  DockPanel(泊靠式面板)  WrapPanel(自行折行面板)

一.Grid.使用绝对值的行高不会改变而使用比例值的行高会保持固有比例。而且,行高和列宽的默认形式就是比例值,所以如果没有显式指定行高或列宽时,默认值就是1*,

      1*又可以简写为*

二.StackPanel:把内部元素在纵向或横向上紧凑排列、形成栈式布局

三.Canvas:当控件被放置到Canvas里时就会被附加上Canvas.X和Canvas.Y属性。

 <Canvas><TextBlock Text="用户名:" Canvas.Left="12" Canvas.Top="12"/><TextBox Height="23" Width="200" BorderBrush="Black" Canvas.Left="66" Canvas.Top="9"/><TextBlock Text="密码" Canvas.Left="12" Canvas.Top="40.72" Height="16" Width="36"/><TextBox Height="23" Width="200" BorderBrush="Black" Canvas.Left="66" Canvas.Top="38"/><Button Content="确定" Width="80" Height="22" Canvas.Left="100" Canvas.Top="68"/><Button Content="清除" Width="80" Height="22" Canvas.Left="186" Canvas.Top="67"/></Canvas>

四.DockPanel:其中的元素会被附加上DockPanel.Dock这个属性,这个属性的数据类型为枚举,枚举值可取Left\Top\Right\Botton四个值,根据值,会向指定方向累计

<Grid><DockPanel><TextBox DockPanel.Dock="Top" Height="25" BorderBrush="Black"/><TextBox DockPanel.Dock="Left" Width="150" BorderBrush="Black"/><TextBox BorderBrush="Black"/></DockPanel></Grid>

五.WrapPanel:采用的时流式布局。使用Orientation属性控制流延伸的方向,使用HorizontalAlignment 和VerticalAlignment属性控制内部控件的对齐;

 <WrapPanel Orientation="Vertical"><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/></WrapPanel>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786670.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第7篇:在虚拟机 centos7上搭建jira管理工具

本文详细介绍了如何在CentOS7系统上下载配置Jira,包括创建文件夹、下载安装包、解压、修改配置文件以及设置JVM和MySQL环境。同时,文章还涉及了JDK1.8的安装,数据库的创建,以及Jira的破解步骤,包括替换特定jar文件和配置数据库连接。最后,文章提到了启动Jira服务并进行汉…

最近遇到的一些奇奇怪怪奇技淫巧

然后我CF上绿了————DaisySunchaser要多思考。构造——从哪里入手?CF交互指南要多注意。 我的最初想法:当我查看了他使用了冰茶几的代码: #include<bits/stdc++.h> #define ll long long #define N 200005 #define mp make_pair using namespace std; int T,n,u[N]…

Qt/C++音视频开发81-采集本地麦克风/本地摄像头带麦克风/桌面采集和麦克风/本地设备和桌面推流

一、前言 随着直播的兴起,采集本地摄像头和麦克风进行直播推流,也是一个刚需,最简单的做法是直接用ffmpeg命令行采集并推流,这种方式简单粗暴,但是不能实时预览画面,而且不方便加上一些特殊要求。之前就已经打通了音视频文件和视频流的采集,那是不是可以简单点的方式就能…

如何缩短微信文章链接长度

有时候,我们想把微信公众号的文章发到其他平台上,这时候就需要复制文章的链接。有时候,我们想把微信公众号的文章发到其他平台上,这时候就需要复制文章的链接。 ‍ 手机端复制方式如下: ​ ‍ 微信对于短网址的优化 以前,微信公众号文章的链接特别长。但在 2016 年末,微…

verilog代码与设计总结

Verilog编码风格及设计建议相比于case语句,casez语句将z态看做不关心,casex语句将z态和x态看做不关心。并且所有case类型语句均没有优先级。 锁存器是组合逻辑产生的,一般没有复位端,所以根据其所存特性,在上电的时候没法确定其初始状态,因此正常情况下要避免使用。 组合…

【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?

问题描述 使用标准版的Azure Logic App服务,可以创建多个工作流(workflow),如果在启用/禁用其它的工作流时,是否会对正在运行其它工作流造成影响呢? 问题解答 在实际的测验中,我们得到的答案是:会造成影响!在Disabled/Enabled同一个Logic App中的Workflow时,正在运行的…

开源|一款企业应用定制化开发平台,支持企业OA协同办公类信息化系统的建设和开发

前言 在数字化转型的浪潮中,企业面临着多样化的信息系统建设需求。现有的软件系统往往存在定制化程度低、开发周期长、成-本高等问题。此外,随着企业规模的扩大和业务的复杂化,传统的软件系统难以满足灵活多变的业务需 为了解-决这些痛点,企业需要一款能够快速定制、灵活扩…

暑假集训总结 2024

暑假集训总结 2024考试情况:因为身体原因,只参加了29场,表格中标红的是题没改完的 越往后分越低,改题的量也越少,排名和分跟心电图差不多 分低和改题量少不只是因为题难,也有后来状态越来越差,改题的时候很困的原因 为什么排名和分是这样的,主要是心态和答题策略,做不…

Tesla 开发者 API 指南:通过Http发送命令

前言 特斯拉提供两种与汽车通信的方式。一种是使用 API 通过互联网,另一种是使用 BLE 连接。 特斯拉现在只能接受车辆命令 SDK (vehicle command SDK)方式发送命令,该 SDK 使用 Http-Proxy 服务器将命令转发给车辆。除了验证 oAuth 令牌之外,特斯拉正在转向一种更安全的方式…

SFF806A-ASEMI无人机专用SFF806A

SFF806A-ASEMI无人机专用SFF806A编辑:ll SFF806A-ASEMI无人机专用SFF806A 型号:SFF806A 品牌:ASEMI 封装:ITO-220AB 批号:最新 最大平均正向电流(IF):8A 最大循环峰值反向电压(VRRM):600V 最大正向电压(VF):0.95V~0.90V 工作温度:-65C~175C 反向恢复时间:35ns …

博客建站7 - hexo博客独立服务器如何自动部署?

1. 本网站的系统架构 2. 安装git 3. 配置git用户3.1. 为什么要创建git用户 3.2. 创建git用户 3.3. 设置git用户的密码 3.4. 创建公钥-私钥对 3.5. 服务器配置公钥4. hexo配置自动化部署4.1. 配置Git仓库 4.2. hexo站点配置1. 本网站的系统架构网站示例: sunlogging.com 服务器…