C# WPF编程-控件
- 概述
- WPF控件类别包括以下控件:
- 背景画刷和前景画刷
- 字体
- 文本装饰和排版
- 字体继承
- 字体替换
- 字体嵌入
- 文本格式化模式
- 鼠标光标
- 内容控件
- Label(标签)
- Button(按钮)
概述
在WPF领域,控件通常被描述为与用户交互的元素,能接收焦点并接受键盘或鼠标输入的元素。
WPF控件类别包括以下控件:
- 内容控件: 这些控件可包含嵌套的元素。如:Label、Button、ToolTip和ScrollViewer类。
- 带有标题的内容控件: 这些控件允许添加主要内容部分以及单独标题部分的内容控件。通常用于封装更大的用户界面块。如:TabItem、GroupBox以及Expander类。
- 文本控件: 允许用户输入文本的控件。如普通文本(TextBox)、密码文本(PasswordBox)以及格式化文本(RichTextBox)。
- 列表控件: 这些控件在列表中显示项的集合。包括:ListBox和ComboBox类。
- 基于范围的控件: 这些控件通常只有共同的属性Value,可以使用预先规定范围内的任何数字设置改属性。包括Slider以及ProgressBar类。
- 日期控件: 此类控件包括两个允许用户选择日期的控件,Calendar和DatePicker。
所有控件都继承自System.Windows.Control类,该类添加了一小部分基本的基础结构:
- 设置控件内容对齐方式的能力
- 设置Tab键顺序的能力
- 支持绘制背景、前景和边框
- 支持格式化文本内容的尺寸和字体
背景画刷和前景画刷
所有控件都包含背景和前景概念。背景是控件表面,前景是文本。在WPF中分别使用Background和Foreground属性设置这两个区域的颜色。这两个属性处理使用颜色对象,还可以使用更强大的Brush画刷对象:
- SolidColorBrush:单一颜色画刷。
- LinearGradientBrush:线性渐变画刷
- TileBrush:
- 代码设置颜色:
cmd.Background = new SolidColorBrush(Colors.Red);
cmd.Foreground = new SolidColorBrush(Color.FromRgb(red, green, blue));
也可以提供Alpha值,Color.FromArgb()方法创建支持透明度的颜色。Alpha值0到255。
- XAML中设置颜色:
方式1:< Button Background="Red">确认< /Button>方式2:< Button>确认< Button.Background>< SolidColorBrush Color="Red">< /Button.Background>< /Button>方式3:< Button Background="#AAFF0000">确认< /Button>
使用画刷不仅可以设置Background和Foreground属性,还可使用BorderBrush和BorderThickness属性在控件周围绘制边框。
字体
Control类定义的字体相关属性:
代码中下设置字体:
cmd.FontFamily = "Times New Roman";
cmd.FontSize="20";
XAML中设置字体:
<Button Name="cmd" FontFamily="Times New Roman" FontSize="20" FontWeight="Bold">OK</Button>
文本装饰和排版
有些元素还可以通过TextDecorations和Typography属性,支持更高级的文本控制。
<StackPanel><TextBlock TextDecorations="Underline">Underline Text</TextBlock><TextBlock TextDecorations="Baseline">Baseline Text</TextBlock><TextBlock TextDecorations="OverLine">OverLine Text</TextBlock><TextBlock TextDecorations="Strikethrough">Strikethrough Text</TextBlock><TextBlock TextDecorations="None">None Text</TextBlock></StackPanel>
字体继承
当设置任何字体属性时,属性值都会流经嵌套的对象。
字体替换
可以将FontFamily属性设置为有逗号分隔的多个字体选项列表。WPF将按顺序遍历该列表,尝试在列表中指定一种字体。
<Button FontFamily="Technical Italic, Comic Sans MS, Arial">None Text</Button>