wpf控件

控件——载应用程序上与用户进行交互的元素

       所有的控件都是继承自System.windows.Control类,该类提供了一些基本的属性

1、 设置控件对齐方式

2、 设置Tab键顺序

3、 支持绘制背景,前景和边框

4、 支持格式化文本内容的尺寸和字体

 

Background:背景色,以按钮为例,边框以内的区域的颜色

Foreground:前景色 指控件上显示的内容文本的颜色

在wpf中支持代码一起XAML的方式进行设置

代码:BtnOK.Background = new SolidColorBrush(Colors.AliceBlue);

XAML:Background="AliceBlue"

 

Wpf中设置颜色都是通过画刷来实现定义颜色,它继承自System.windows.media类

              其下有三个子类

                    

SolidColorBrush:单一颜色画刷

LinearGradientBrush:线性渐变画刷

TileBrush:                  瓷贴式画刷

 

通过该画刷对象可自定义画刷的RGB值:示例

Brush windowBrush = new SolidColorBrush(Color.FromRgb(255,255,255));

以及常用的ImageBrush,将一副图片作为背景色

Brush windowBrush = new ImageBrush(ImageSource)

 

字体——两个属性 FontFamily 字体名称,fontSize:字体大小

鼠标光标——当鼠标移动特定功能的按钮时,可以显示特殊的光标

              示例:显示帮助的光标,   <Button Cursor=”help” content=“help” />

 

内容控件

所有的内容控件都是继承自ContentControl类

      

内容控件的常用属性

       Conntent属性:表示控件上要显示的内容,它可以接受任意对象,但主要分为两大类

              未继承自UIElement类的对象:内容控件调用这些对象的ToString()方式显示对象的文本

              UIElement子类:调用该对象的UIElement.OnRender()方法进行展示其对象内容

       对齐方式

              HorizontalContentAlignment:水平对齐方式

              VerticalContentAlignment:垂直对齐方式

              Padding :  内容边距;控件内容与控件边框的距离

 

       标签:label标签——接收单一的内容,label控件支持记忆符(mnemonics)

 

 按钮—— Wpf中提供了三种按钮button,CheckBox,RadioButton,它们都继承自ButtonBase类

 

      

特殊容器控件——ScrollViewer滚动控件

 

       VerticalScrollBarVisibilty:垂直滚动条

HorizontalScrollBarVisibilty:水平滚动条 默认是Hidden

 

滚动条属性可以设置为 Disable 不显示,Auto自动、hidden隐藏滚动条(与disable不同的是,隐藏的只是滚动条,而其内部空间是可以无限制的)

 

使用ScrollViewer——通过代码来控制

       LineUp和LineDown方法,相当于单击一次垂直滚动条两端的按钮

       PageUp和pageDown,滚动一整屏幕

       ScrollToXXXX方法 滚动到指定位置

      

ScrollViewer控件滚动原理,

1、在ScrollViewer中放置一个能滚动的元素,只要该元素实现了IScrollInfo接口,通过2、将ScrollViewer.CanContentScroll属性设置为true,设置ScrollViewer滚动方式

3、当和ScrollViewer元素交互时,通过IScrollInfo接口调用元素的滚动方法

 

StackPanel面板实现了IScrollInfo接口

 

内容控件

       HeaderContentControl也是继承自ContentControl的类,他具有单一的元素内容(content属性),和单一的元素标题(存储在header属性中)

 

GroupBox:常用于分组的单选按钮

TabItem:选项卡控件

Expander:具有标题的内容控件,特点是默认显示标题而隐藏其内容,当点击其标题时,而展开其内容;

                  IsExpander属性:设置是否初始化就是折叠内容状态

                  ExpandDirection属性:设置内容展开的向,UP,Left,Right等

                 

使用Expander的注意事项:

1、 为窗口设置最小尺寸(MinWidth和MinHeight),确保窗口能展示内容

2、 设置窗口的SizeTocontent属性,使窗口自动扩展为所需要的大小,通常设置为Manual,也可以使用width和height属性

3、 通过硬编码设置其大小时,若内容过多可能会裁剪掉部分内容

4、 最稳妥的方式使用ScrollViewer为其创建一个可以滚动的区域

 

 

     文本控件         

TextBox:文本输入框,通过设置其TextWarpping属性可以扩展为多行文本框,VerticalScrollBarVisibilty属性设置其不常用的滚动条是否可见,

输入换行AcceptsReturn="True" 设置Enter键换行

IsReadOnly:只读属性,设置文本框只能通过代码的方式赋值,可以避免禁用控件而带来的样式变化

 

PasswordBox:密码输入框,与普通文本的区别在于,虽然它也可以通过使用password属性

                     使用普通字符串为其赋值,但内部使用SecureString对象来保存值,此对象是               以加密的方式存储在内存中,当调用SecureString.Dispose方法时,会销毁内               存中的密码数据,当控件被销毁时亦会调用此方法

 

RichTextBox:RichTexBox是个可编辑控件,内部包容了一个Document对象,用于插入更多元素内容!

 

列表控件

ListBox: 包含一个ListBoxItem对象也可以包含其他任意对象,通过设置其SelectionMode的值Multiple和Extended,在Extended模式下用户可以通过Ctrl键或者Shift键进行多选

 

ComboBox:该控件包含ComboBoxItem对象的集合,与ListBox的区别在于其展示的方式,ComboBox使用下拉列表并仅展示其中一个子元素!

              IsEditable属性可以设置其子元素可以修改

 

基于范围内的控件

RangBse类:Wpf中提供了三个范围概念的控件,它们都是继承自RangBase类,该提供了以下属性Value :控件当前的值; Maximum:控件最大值(上限)Minimum;控件最小值(下限);SmallChange:Value值调整的数值(类似ScrollViewer中箭头点击一次调整的值);LargeChange:value调整数值(相当于ScrollViewer.PageUp一次调整的值):

       ScrollBar:非常用控件,此处不做介绍

       Slider:  滑块,通常设定某项有范围属性值,如播放视频的进度,音量大小的条件

       ProgressBar:进度条;指示一个常时间运行的任务,方便用户查看任务的进度指示器当

                其IsIndeterminate属性设置为true的时候,显示从左到右的绿色脉冲

 

日期控件

       Wpf4中提供了两种日期控件Calender和DatePicter,它们都可以实现用户选择任意一个日期

它们的区别在于 DatePicter提供了一个文本框用户接收用户选择的日期,并且在布局上比Calender需要更小的空间

左Calender,右DatePicter

 

             

 

             

                    

转载于:https://www.cnblogs.com/shenwenbo/p/9784114.html

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

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

相关文章

The import javax.servlet cannot be resolved

错误的原因是&#xff1a;缺少servlet-api.jar这个包&#xff0c;将这个包导入项目里面就可以了。1. 我们可以到tomcat的lib目录下面找到这个包&#xff0c;然后在eclipse中&#xff0c;右击项目&#xff0c;2. 选择Java Build Path>Libraries>Add ExternalJARS,找到你计…

mybatis中修改了数据,控制台显示成功,数据库没有修改

在mybatis中遇到了修改数据时&#xff0c;控制台显示修改成功&#xff0c;但是去数据库查看并没有修改&#xff0c;这是因为mybatis不时自动提交事务的&#xff0c;所以是不会修改数据库的数据&#xff0c;这是我们加上一句 sqlSession.commit()就可以了。转载于:https://www.c…

The type Resource is not accessible due to restriction on required library

项目属性preferences>java build path>把右侧【libraries中的JRE System Library】删除重新导入.

BZOJ1500 [NOI2005]维修数列(Splay tree)

[Submit][Status][Discuss]Description 请写一个程序&#xff0c;要求维护一个数列&#xff0c;支持以下 6 种操作&#xff1a;请注意&#xff0c;格式栏 中的下划线‘ _ ’表示实际输入文件中的空格Input 输入的第1 行包含两个数N 和M(M ≤20 000)&#xff0c;N 表示初始时数列…

日期格式转换:String 与 date

在java中转换 //String—>Date String time “2018-01-09”&#xff1b; try{SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");Date date sdf.parse(time); }catch(ParseException e){System.out.println(e.getMessage()); } //Date—>String S…

在java中对null的理解

转载&#xff1a;https://www.cnblogs.com/X-World/p/5686122.html Java中的Null是什么&#xff1f; 1&#xff09;首先&#xff0c;null是关键字&#xff0c;像public、static、final。它是大小写敏感的&#xff0c;你不能将null写成Null或NULL&#xff0c;编译器将不能识别…

obs video-io.c

video_frame_init 讲解 /* messy code alarm video_frame_init 函数用于初始化视频帧。它接受一个指向 struct video_frame 结构体的指针 frame&#xff0c; 视频格式 format&#xff0c;以及宽度 width 和高度 height。该函数根据视频格式的不同&#xff0c;计算出每个视频帧…

如何解决SVN 清理失败

解决方法&#xff1a; 下载 sqlite3.exe 在你的清理失败的路径下查看.svn目录下是否存在一个wc.db文件&#xff0c;把解压好的sqlite3.exe 放在wc.db文件的同一路径下 注意&#xff1a;主要是用sqlite3.exe清理掉wc.db中的相关信息。 通过cmd命令行进入你清理失败的路径&am…

10-Linux与windows文件互传-pscp坑---- 'pscp' 不是内部或外部命令,也不是可运行的程序或批处理文件...

1.下载pscp工具http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html2.拷贝到C:\Windows\System32 如果考到其他文件夹&#xff0c;运行提示 pscp 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 那么考到这个文件下吧&#xff01;&#xff0…

MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

前两篇教程我们介绍了如何搭建MongoDB的本地环境&#xff1a; MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录&#xff1a; MongoDB最简单的入门教程之二 使用nodejs访问MongoDB 这篇教程我们会介绍如何使用Java代码来连接MongoDB。 如果您是基于M…

oracle创建用户及授权等相关操作

1、创建用户 create user test identified by test; 这样就创建了一个用户名密码都为test的用户 但这个时候test还是不能登陆成功的&#xff0c;我们需要赋予相应的权限 2、赋予create session 的权限 grant create session to test; 这样test用户就能成功登录进去赋予用户创…

Warning: Received `false` for a non-boolean attribute `xxx`.

React对boolean类型的attribute的识别方式问题&#xff0c;可以采用以下方法解决&#xff1a; xxx{value ? 1 : 0} 改成数字的写法&#xff0c;不用布尔值。 具体可以参考&#xff1a;https://github.com/styled-components/styled-components/issues/1198 转载于:https://www…

row_number() over(partition by order by )使用说明书

作用&#xff1a;数据库去除重复记录&#xff0c;进行排序。 语法&#xff1a;ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) 功能&#xff1a;表示根据COL1分组&#xff0c;在分组内部根据 COL2排序&#xff0c;而这个值就表示每组内部排序后的顺序编号&#xff08;组…

C点滴成海------Dev C++怎么修改成简体中文

第一步&#xff1a;选择菜单中的Tools 第二步&#xff1a;选择Tools中的“Envirnoment Options”&#xff0c;即第二个选项 第三步&#xff1a;选择中文并保存 将"1"的语言改成中文就行了 转载于:https://www.cnblogs.com/hahayixiao/p/9824080.html

PLSQL快捷键使用,让你高速开发

不需要选中整行&#xff0c;执行光标所在行&#xff0c;按F8就可直接执行&#xff1b; 工具—>首选项—>SQL窗口—>自动选择&#xff0c;勾选自动选择即可。 这样光标放在此行&#xff0c;按F8就可以执行&#xff0c;需要注意的是sql语句必须以分号结束。下期更新

eclipse的优化操作

取消“updating maven dependencies” 如果没有用到maven&#xff0c;可以取消这个操作。eclipse下可以选上这个选项 Window -> Preferences -> Maven -> enable Offline option MyEclipse的话&#xff0c;取消了Maven4MyEclipse的话&#xff0c;update maven index…

case when then else end

sql case when then else end 查询生成统计列表 case具有两种格式。简单case函数和case搜索函数。 –简单case函数 case sexwhen 1 then 男when 2 then 女else 其他 end--case搜索函数case when sex 1 then 男when sex 2 then 女else 其他 end这两种方式&#xff0c;可以实…

XML报错,是启动不了服务的。

XML报错&#xff0c;是启动不了服务的。

sql优化——模糊查询

like 和 instr的查询效率 select name from user where instr(id, 99)> 0; 等价于select name from user where id like %99%; LIKE查询一次&#xff0c;就走一次全表扫描&#xff0c;效率非常慢 同样的效果&#xff0c;现在来换做INSTR函数来执行&#xff0c;时间上…

Oracle创建序列,删除序列

1、创建 -- Create sequence create sequence SEQ_USERID minvalue 1 maxvalue 999999999999 start with 1 increment by 1 nocache cycle; 2、查询 select SEQ_USERID.nextval from dual; 3、删除 drop sequence SEQ_USERID&#xff1b;