展示类组件
展示类
- Button
- RadioButton
- CheckBox
- Image
- Label
- TextBlock
- ProgressBar
- ComboBox
- Rectangle
输入类
- TextBox
- PasswordBox
- RichTextBox
TextBlock 文本展示
选中和悬浮变色
1 | <TextBlock |
文字阴影
1 | <TextBlock |
文本换行
方式1
转义字符换行
代码中
1 | this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB"; |
XAML中
1 | <TextBlock Text="AAAAAAA
BBBBBB" /> |
方式2
设置自动换行
1 | <TextBlock Width="60" TextWrapping="Wrap" Text="AAAAAAA BBBBBB"/> |
方式3
使用InLines属性的LineBreak来换行
简单的来说就是,显示的XAML表示用
1 | <TextBlock Width="60" TextWrapping="Wrap"> |
后台代码添加
1 | TextBlock1.Inlines.Add(New Run("AAAAAA")); |
另外如果RUN里面有大量的文字表示,超过了TextBlock的Width时候,文字会被剪切掉,而不是自动换行,这点需要注意一下
Rectangle 分割线
1 | <Rectangle |
Image 图片
Image的Stretch属性
Uniform(默认) —— 这代表图片会均匀的变大和缩小,保证了图片的比例不失调,而往往我们设置的宽和高并不符合图片的比例,因此显示效果就不是我们预期所想。
None——图片会按原始大小显示。
Fill——图片会按照设置的Width和Height显示,比例会失调。
UniformToFill——图片会按照设置的Width和Height显示,但图片是均匀变大和缩小的,比例不失调,超出显示范围的图像会被截掉。
小图片不缩放,大图片缩放
1 | <Viewbox> |
操作类组件
Button 按钮
1 | <Button |
要想没有内容的按钮可点击要设置
1 | HorizontalContentAlignment="Stretch" |
TextBox 输入框
文字居中
1 | <TextBox |
单行不换行
1 | <TextBox |
文字换行与滚动条
1 | <TextBox |
ComboBox 下拉菜单
1 | <ComboBox |
数据绑定
1 | var addressList = ZConfig.ipaddressList(); |
注意
ip_cb.SelectedIndex = 0;
会触发回调。
选中回调
1 | private void ip_cb_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) |
获取到的是SelectedValuePath
对应的值
1 | //保存的ID |
CheckBox
1 | <CheckBox |
自定义样式
1 | <Style x:Key="ZCheckBoxStyle" TargetType="{x:Type CheckBox}"> |
定位常用属性
在设计UI时,WPF为我们提供了一些属性用于精确定位元素
其中最常用的有三个:Alignment(包括水平,垂直),Margin,Padding,
具体用法如下:
HorizontalAlignment: 子元素在水平方向的对齐方式,有左对齐,右对齐,中间对齐,拉伸填充等四种方式。
VerticalAlignment:子元素在垂直方向的对齐方式,有顶端对齐,底部对齐,中间对齐,拉伸填充等四种方式。
Margin:用于指定元素与其父级或同级之间的距离,包括上下左右四个值。也可通过使用 Margin=”20”同时指定四个值。
Padding:用于指定元素与其子级之间的距离,包括上下左右四个值。也可通过使用Padding=”20”同时指定四个值。
内容定位
1 | VerticalContentAlignment="Center" |
支持Padding
组件和容器有的支持Padding有的不支持,这里统计一下
容器
支持Padding的
1 | <Border Padding="10" /> |
不支持Padding的
1 | <Canvas /> |
可以看出静态容器都不支持Padding。
组件
支持Padding的
1 | <Button Padding="10" /> |
不支持Padding的
1 | <Rectangle /> |
可以看出组件大都支持Padding。
WPF 中的Width 与 ActualWidth
在WPF中,控件有Width 和 ActualWidth两个属性,二者的区别如下:
Width:是我们期望控件应有的宽度,是可读写的,可在xaml文件中设置,也可在程序中设置。如果没有设置,Width的值为NaN(Not a Number)
ActualWidth:是控件Render的实际宽度,控件Render之前,它的值为0,。该属性是只读的。
ScrollViewer无法滚动
需要给ScrollViewer注册一个鼠标滚轮事件!
1 | <ScrollViewer |
后台代码实现:
1 | private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e) |
居然ScrollViewer控件默认不带滚动!!!
去掉组件获取焦点的虚框
1 | <CheckBox |
也就是设置属性
1 | FocusVisualStyle="{x:Null}" |
或者
1 | <Style x:Key="MyButton" TargetType="{x:Type Button}"> |
自定义字体
一、准备字体文件,以TTF格式结尾;复制到项目中,并设置Build Action(生成操作)
为Resource(资源)
;
二、在App.xaml中或者你需要的地方添加字体资源的定义;
资源定义处引用的并不是字体文件的名称,而是字体名称,字体的具体名称可以打开字体文件进行查看。
引用字体的时候不用写文件的名称
字体名称一定要写
1 | <Application.Resources> |
当然写上文件名称也可以
1 | <Application.Resources> |
或者页面内引用
1 | <Window.Resources> |
使用
1 | <TextBlock Text="10:30" FontFamily="{StaticResource UnidreamLed}" FontSize="16"/> |
边框阴影
1 | <Border |
注意
设置阴影的Border一定要设置Margin,否则不显示。