常用控件
这里会介绍一下常用控件的用途及属性
Rectangle
用于绘制矩形
- Fill:矩形的填充色。
- Stroke:边框颜色。
- StrokeThickness:边框厚度
Button
常用属性如下:
- Content:设置按钮文本或内容
- IsEnabled:设置按钮是否可用
- Command:绑定命令(常用于 MVVM 模式)
- Click:设置点击事件的处理程序
RepeatButton
这个按钮与Button的区别就是支持长按效果
TextBox
文本输入控件
- TextWrapping:
- Wrap:文本超过指定宽度就换行
- Text:放置占位文本
- ScrollViewer.VerticalScrollBarVisibility:
- Auto:垂直滚动条
Label
用于显示文本,与 TextBlock 类似,但支持更复杂的内容
- Target:绑定到其他控件
- Content:设置显示的文字内容
TextBlock
用于显示文本
- TextWrapping:是否自动换行
- Text:设置显示的文字。
PasswordBox
文本输入控件,用于密码输入框
- Password:放置占位文本
- PasswordChar:密码输入框输入字符的呈现方式,默认是圆角
- MaxLength:密码的最大长度
RichTextBox
富文本输入控件
Image
用于显示图片,其常用属性如下:
- Stretch:设置图片的缩放模式
- Source:图片路径
RadioButton
单选控件
- GroupName:组名,用于分组,确保同组中仅单选一个
- IsChecked:是否选中
- Content:显示的文本
CheckBox
多选控件
- IsChecked:是否选中
- True:选中
- Null:半选中
- Checked / Unchecked:复选框状态变化事件
Slider
这个控件用于调整值,如音量控制、亮度调整
- Minimum:最小值
- Maximum:最大值
- Value:滑块初始化的默认值
- Orientation:水平或垂直方向
ProgressBar
使用这个控件可以实现软件正在加载中的效果(一个进度条)
- Value:进度条初始化的默认值
- Minimum:最小值
- Maximum:最大值
ComboBox
下拉框
- SelectedIndex:下拉框默认显示的item,index从0开始
- ItemsSource:绑定数据源
- IsEditable:是否允许用户输入自定义值
- SelectedItem:获取或设置当前选中的项
ListBox
用于显示可选择的列表项
- ItemsSource:绑定数据源。
- SelectedItem:获取当前选中的项。
- SelectionMode:设置单选或多选模式。
ListView
这个控件和ListBox相比,可以分列实现表格的效果
DataGrid
这个控件也可以实现表格的效果,用于显示表格数据,支持排序、编辑和选择等
- AutoGenerateColumns:是否自动生成列
- ItemsSource:绑定数据源
- SelectionMode:设置单选或多选模式
- CanUserSortColumns:是否允许列排序
TabControl
这个控件可以实现多标签页的切换效果,用于创建选项卡式界面
- SelectedItem:获取当前选中的标签页
- ItemsSource:绑定 Tab 页数据
Menu
这个控件可以实现桌面软件中菜单栏的效果
ContextMenu
这个控件可以实现右键打开的上下文菜单效果
TreeView
树形控件,可以实现文件夹浏览,层次结构导航的效果
Calendar
日历控件
- SelectedDate:选中的日期。
- DisplayDate:当前显示的日期。
- BlackoutDates:设置禁止选择的日期范围
DatePicker
日期控件
- SelectedDate:选中的日期。
- DisplayDateStart / DisplayDateEnd:设置日期显示范围。
OpenFileDialog
SaveFileDialog
Border
用于为内容添加边框或背景,圆角等。常用属性如下:
- BorderBrush:设置边框的颜色
- BorderThickness:设置边框宽度
- CornerRadius:设置圆角大小
- Background:设置背景色
- Padding:设置内容的内边距
Expander
用于显示可折叠的内容块,如设置面板、帮助菜单
- Header:折叠部分的标题。
- IsExpanded:是否展开。
- 示例如下:
<Expander Header="More Details" IsExpanded="False">
<StackPanel>
<TextBlock Text="设置项1" />
<TextBlock Text="设置项2" />
<TextBlock Text="设置项3" />
</StackPanel>
</Expander>
GroupBox
分组控件,可以对多个控件分组
ViewBox
用于缩放和布局其子元素,以适应给定的空间(自适应布局)。它通常被用来在保持内容的纵横比或比例的同时,将 UI元素调整到容器的大小
布局属性
- Margin
- Padding
- VerticalAlignment
- HorizontalAlignment
布局
布局相关的控件如下
Grid
用于定义行和列布局,可以实现几行几列的效果
- RowDefinitions / ColumnDefinitions:定义网格行和列
- Grid.Row / Grid.Column:设置控件所占的行和列
- 比如说两行两列
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="8*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Column="0" Grid.Row="0" Background="Red" />
<Border Grid.Column="1" Grid.Row="0" Background="Green" />
<Border Grid.Column="0" Grid.Row="1" Background="Blue" />
<Border Grid.Column="1" Grid.Row="1" Background="Yellow"/>
</Grid>
- 效果如下:
StackPanel
垂直或水平堆叠子元素,默认将StackPanel内部的控件垂直排列,不会自动换行或者换列,排列不下就会被窗口遮挡
- Orientation:设置布局方向(水平或垂直)。
- Margin:设置子元素之间的间距
WrapPanel
默认将WrapPanel内部的控件水平排列,会自动换行或者换列
- Orientation:设置子元素的排列方向(水平或垂直)
- ItemHeight:每个子元素的固定高度(可选)。
- ItemWidth:每个子元素的固定宽度(可选)
DockPanel
用于页面布局,通常在导航栏、工具栏设计中使用,DockPanel内部的控件可以进行停靠
- DockPanel.Dock:设置子控件停靠位置(Left、Right、Top、Bottom)。
- LastChildFill:最后一个子控件是否填充剩余空间
Canvas
- Canvas.Left / Canvas.Top:设置子控件的绝对位置。
- Background:设置背景颜色
InkCanvas
这个控件可以实现Windows下mspaint的效果
UniformGrid
这个控件内部的控件可以均分空间
实战
- 实现如下所示的布局
- 代码如下:
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="7*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="#7671D8"/>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<Border Background="Blue" Grid.Column="0" Grid.Row="1"></Border>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Background="#7671D8" Grid.Column="0" Margin="5"></Border>
<Border Background="#4C9ECD" Grid.Column="1" Margin="5"></Border>
<Border Background="#D970CE" Grid.Column="2" Margin="5"></Border>
<Border Background="#50bab6" Grid.Column="3" Margin="5"></Border>
<Border Background="#df7b7b" Grid.Column="4" Margin="5"></Border>
<Border
Background="Red"
Grid.Row="1"
Grid.ColumnSpan="3"
Margin="5"
/>
<Border
Background="Yellow"
Grid.Row="1"
Grid.Column="3"
Grid.ColumnSpan="2"
Margin="5"
/>
<Border
Background="Green"
Grid.Row="2"
Grid.ColumnSpan="3"
Margin="5"
/>
<Border
Background="Orangered"
Grid.Row="2"
Grid.Column="3"
Grid.ColumnSpan="2"
Margin="5"
/>
</Grid>
</Grid>
</Grid>