当前位置: 首页 > news >正文

WPF 控件

            <div id="content_views" class="htmledit_views"><p id="main-toc"><strong>目录</strong></p> 

WPF基础控件

按钮控件:

Button:按钮

RepeatButton:长按按钮

RadioButton:单选按钮

数据显示控件

TextBox:输入框

RichTextBox:富文本

CheckBox:复选框

ComboBox:下拉框

DataPicker:日期选择器

PasswordBox:密码框

Slider:滑块

ProgressBar:进度条

TextBlock:只读文本控件

Lable:标签 显示文本控件

ListBox:显示可选择项的列表

DataGrid:数据表格控件

ListView:显示列表数据

Image:图片

ToggleButton:切换状态按钮控件

菜单导航控件

MenuItem:菜单

ContextMenu:上下文菜单

ToolBar:创建工具栏

TreeView:树状视图

TabControl:选项卡

Expander:折叠控件

信息提示控件

Popup:弹出式窗口

Window:窗口

PrintDialog:打印窗口

ToolTip:悬停时提示按钮

布局控件

Grid:网格

StackPanel:堆栈面板

DockPanel:停靠面板

WrapPanel:自动换行面板

Canvas:画布

UniformGrid:均匀网格

GridSplitter:网格分割器

TabPanel:选项卡面板

图形控件

Line:线

Rectangle:矩形

Ellipse:圆

Polyline:点的集合

Polygon:点的集合 封闭

Path:path图形

其他控件

ScrollViewer:滚动容器

GroupBox:分组容器

ViewBox:显示盒子

扩展:WPF继承树


WPF基础控件

控件类型

主要控件

按钮控件

Button、RepeatButton、RadioButton

数据显示控件

TextBlock、Lable、ImageItemsControlListViewListBoxDataGrid、DocumentViwer

输入控件

TextBox、RichTextBox、CheckBoxcomboBox、DataPicker、PasswordBoxSlider、ProgressBar

菜单导航控件

MenuItem、ContextMenu、ToolBar、TreeView、TabControl、Expander

信息提示控件

PopupWindow、PrintDialog、ToolTip

布局控件

GridStackPanelWrapPanelDockPanelUniformGridCanvasInkCanvasBorder

图形控件

Line、Rectangle、Ellipse、Polyline、Polygon、Path

其他控件

ScrollViewer、GroupBox、ViewBox

按钮控件:
Button:按钮
<Button Content="按钮" Width="100" Height="50" Click="Button_Click"/>

常用属性:

  • Content: 按钮显示的内容。
  • Width: 按钮的宽度。
  • Height: 按钮的高度。

常用事件:

  • Click: 当用户单击按钮时触发的事件。
RepeatButton:长按按钮
  1. <RepeatButton Content="RepeatButton" Width="100" Height="50"
  2. Click="RepeatButton_Click" Interval="500"/>

常用属性:

  • Content: RepeatButton 显示的内容。
  • Width: RepeatButton 的宽度。
  • Height: RepeatButton 的高度。
  • Interval: 重复触发事件之间的时间间隔(以毫秒为单位)。

常用事件:

  • Click: 当用户单击按钮时触发的事件。

在这个示例中,当用户点击按钮时,会触发名为 RepeatButton_Click 的事件处理程序。Interval 属性设置了事件重复触发之间的间隔时间(500 毫秒)。

注意:RepeatButton 是一个特殊的按钮,当用户按住它时,会不断触发 Click 事件,直到按钮被释放。

RadioButton:单选按钮
  1. <StackPanel>
  2. <RadioButton Content="RadioButton1" GroupName="Options" Checked="RadioButton_Checked"/>
  3. <RadioButton Content="RadioButton2" GroupName="Options" Checked="RadioButton_Checked"/>
  4. <RadioButton Content="RadioButton3" GroupName="Options" Checked="RadioButton_Checked"/>
  5. </StackPanel>
  1. private void RadioButton_Checked(object sender, RoutedEventArgs e)
  2. {
  3. RadioButton radioButton = (RadioButton)sender;
  4. MessageBox.Show(radioButton.Content.ToString());
  5. }

常用属性:

  • Content: RadioButton 显示的内容。
  • GroupName: 组名,确保同一组内的 RadioButton 互斥。
  • IsChecked: 是否选中。
  • IsEnabled: 是否启用。
  • HorizontalAlignment: 水平对齐方式。
  • VerticalAlignment: 垂直对齐方式。

常用事件:

  • Checked: 当 RadioButton 被选中时触发的事件。
  • Unchecked: 当 RadioButton 被取消选中时触发的事件。
数据显示控件
TextBox:输入框
  1. <TextBox Name="textBox" Width="200" Height="30"
  2. TextChanged="TextBox_TextChanged" KeyDown="TextBox_KeyDown"
  3. LostFocus="TextBox_LostFocus"/>

常用属性:

  • Text: 获取或设置 TextBox 中的文本内容。
  • MaxLength: 指定 TextBox 中允许输入的最大字符数。
  • IsReadOnly: 指示 TextBox 是否为只读。
  • AcceptsReturn: 指示 TextBox 是否接受回车键输入(多行文本输入)。
  • AcceptsTab: 指示 TextBox 是否接受 Tab 键输入。
  • HorizontalScrollBarVisibility: 设置水平滚动条的可见性(Disabled, Auto, Hidden, Visible)。
  • VerticalScrollBarVisibility: 设置垂直滚动条的可见性(Disabled, Auto, Hidden, Visible)。
  • TextWrapping: 指示是否自动换行(NoWrap, Wrap, WrapWithOverflow)。
  • PlaceholderText: 获取或设置在 TextBox 中未输入文本时显示的占位符文本(如果使用 WPF 早期版本可能需要自定义)。
  • CaretIndex: 获取或设置插入符号的位置。

常用事件:

  • TextChanged: 当 TextBox 中的文本内容发生变化时触发的事件。
  • KeyDown: 当按键按下时触发的事件。
  • KeyUp: 当按键释放时触发的事件。
  • LostFocus: 当 TextBox 失去焦点时触发的事件。
  • GotFocus: 当 TextBox 获得焦点时触发的事件。

TextChanged 事件处理程序

  1. private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
  2. {
  3. TextBox textBox = sender as TextBox;
  4. // 处理文本变化事件的代码
  5. MessageBox.Show("Text changed: " + textBox.Text);
  6. }

KeyDown 事件处理程序

  1. private void TextBox_KeyDown(object sender, KeyEventArgs e)
  2. {
  3. if (e.Key == Key.Enter)
  4. {
  5. // 处理回车键按下的事件
  6. MessageBox.Show("Enter key pressed");
  7. }
  8. }

LostFocus 事件处理程序

  1. private void TextBox_LostFocus(object sender, RoutedEventArgs e)
  2. {
  3. TextBox textBox = sender as TextBox;
  4. // 处理失去焦点事件的代码
  5. MessageBox.Show("TextBox lost focus");
  6. }

RichTextBox:富文本
  1. <RichTextBox Name="richTextBox" Width="300" Height="200"
  2. TextChanged="RichTextBox_TextChanged"
  3. SelectionChanged="RichTextBox_SelectionChanged" />

常用属性:

  • Document: 获取或设置 RichTextBox 显示的 FlowDocument。
  • IsReadOnly: 指示 RichTextBox 是否为只读。
  • CaretPosition: 获取或设置插入符号的位置。
  • Selection: 获取当前选定的内容。
  • HorizontalScrollBarVisibility: 设置水平滚动条的可见性(Disabled, Auto, Hidden, Visible)。
  • VerticalScrollBarVisibility: 设置垂直滚动条的可见性(Disabled, Auto, Hidden, Visible)。
  • AcceptsReturn: 指示是否接受回车键输入。
  • AcceptsTab: 指示是否接受 Tab 键输入。

常用事件:

  • TextChanged: 当 RichTextBox 中的文本内容发生变化时触发的事件。
  • SelectionChanged: 当 RichTextBox 中的文本选择发生变化时触发的事件。
  • GotFocus: 当 RichTextBox 获得焦点时触发的事件。
  • LostFocus: 当 RichTextBox 失去焦点时触发的事件.

TextChanged 事件处理程序

  1. private void RichTextBox_TextChanged(object sender, TextChangedEventArgs e)
  2. {
  3. RichTextBox richTextBox = sender as RichTextBox;
  4. // 处理文本变化事件的代码
  5. MessageBox.Show("Text changed in RichTextBox");
  6. }

SelectionChanged 事件处理程序

  1. private void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e)
  2. {
  3. RichTextBox richTextBox = sender as RichTextBox;
  4. // 处理选择变化事件的代码
  5. MessageBox.Show("Selection changed in RichTextBox");
  6. }

使用 XAML 设置初始内容

  1. <RichTextBox Name="richTextBox" Width="300" Height="200"
  2. TextChanged="RichTextBox_TextChanged"
  3. SelectionChanged="RichTextBox_SelectionChanged" >
  4. <RichTextBox.Document>
  5. <FlowDocument>
  6. <Paragraph>
  7. <Run Text="测试" Foreground="Red"></Run>
  8. <Run Text="开发" Foreground="Blue"></Run>
  9. </Paragraph>
  10. </FlowDocument>
  11. </RichTextBox.Document>
  12. </RichTextBox>

使用C#代码设置初始内容

  1. private void initRichTextBox()
  2. {
  3. Paragraph paragraph = new Paragraph();
  4. Run run = new Run();
  5. run.Text = "Hello World";
  6. run.Foreground = new SolidColorBrush(Colors.Orange);
  7. paragraph.Inlines.Add(run);
  8. FlowDocument flowDocument = new FlowDocument(paragraph);
  9. richTextBox.Document = flowDocument;
  10. }

CheckBox:复选框
  1. <CheckBox Name="checkBox" Content="Check me" IsChecked="False"
  2. HorizontalAlignment="Center" VerticalAlignment="Center"
  3. Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>

常用属性:

  • Content: CheckBox 显示的内容。
  • IsChecked: 获取或设置 CheckBox 是否选中(可以是 True, False, 或 null 表示未确定状态)。
  • IsThreeState: 指示 CheckBox 是否支持三态(选中、未选中、未确定)。
  • IsEnabled: 指示 CheckBox 是否启用。
  • HorizontalAlignment: 水平对齐方式。
  • VerticalAlignment: 垂直对齐方式。

常用事件:

  • Checked: 当 CheckBox 被选中时触发的事件。
  • Unchecked: 当 CheckBox 被取消选中时触发的事件。
  • Indeterminate: 当 CheckBox 进入未确定状态时触发的事件。

Checked 事件处理程序

  1. private void CheckBox_Checked(object sender, RoutedEventArgs e)
  2. {
  3. // 处理 CheckBox 选中事件的代码
  4. MessageBox.Show("CheckBox is checked.");
  5. }

Unchecked 事件处理程序

  1. private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
  2. {
  3. // 处理 CheckBox 取消选中事件的代码
  4. MessageBox.Show("CheckBox is unchecked.");
  5. }

Indeterminate 事件处理程序(如果 IsThreeState 为 true)

  1. private void CheckBox_Indeterminate(object sender, RoutedEventArgs e)
  2. {
  3. // 处理 CheckBox 未确定状态事件的代码 半选中状态
  4. MessageBox.Show("CheckBox is indeterminate.");
  5. }
ComboBox:下拉框
  1. <ComboBox Name="comboBox" Width="200" Height="30"
  2. SelectionChanged="ComboBox_SelectionChanged">
  3. <ComboBoxItem Content="Item 1"/>
  4. <ComboBoxItem Content="Item 2"/>
  5. <ComboBoxItem Content="Item 3"/>
  6. </ComboBox>

常用属性

  • ItemsSource: 获取或设置用于填充 ComboBox 的数据源。
  • SelectedItem: 获取或设置 ComboBox 中当前选定的项。
  • SelectedIndex: 获取或设置 ComboBox 中当前选定项的索引。
  • IsEditable: 指示 ComboBox 是否可编辑。
  • Text: 获取或设置 ComboBox 中当前选定项的文本。
  • DisplayMemberPath: 获取或设置显示项的属性路径。如果是ItemsSource传值,就显示的字段名
  • SelectedValuePath: 获取或设置选定项的值路径。
  • IsDropDownOpen: 获取或设置下拉部分是否已打开。
  • MaxDropDownHeight: 获取或设置下拉部分的最大高度。

常用事件:

  • SelectionChanged: 当 ComboBox 中选定项发生变化时触发的事件。
  • DropDownOpened: 当下拉部分打开时触发的事件。
  • DropDownClosed: 当下拉部分关闭时触发的事件.

SelectionChanged 事件处理程序

  1. private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3. MessageBox.Show(comboBox.SelectedIndex+"");
  4. }

数据绑定示例

  1. ....
  2. List<ComboxItem> itemList = new List<ComboxItem>
  3. {
  4. new ComboxItem { Name = "张三", Id = "1" },
  5. new ComboxItem { Name = "李四", Id = "2" },
  6. new ComboxItem { Name = "王二", Id = "3" }
  7. };
  8. comboBox.ItemsSource = itemList;
  9. .....
  10. class ComboxItem
  11. {
  12. public string Name { get; set; }
  13. public string Id { get; set; }
  14. }
  1. <ComboBox Name="comboBox" Width="200" Height="30"
  2. SelectionChanged="ComboBox_SelectionChanged"
  3. DisplayMemberPath="Name"/>
DataPicker:日期选择器
  1. <DatePicker Name="datePicker" Width="200"
  2. SelectedDateChanged="DatePicker_SelectedDateChanged" />

常用属性:

  • SelectedDate: 获取或设置 DatePicker 中当前选定的日期。
  • DisplayDate: 获取或设置在日历中显示的日期。
  • FirstDayOfWeek: 获取或设置 DatePicker 中每周的第一天。
  • IsDropDownOpen: 获取或设置下拉部分是否已打开。
  • DisplayDateStart: 获取或设置日历中可选日期范围的开始日期。
  • DisplayDateEnd: 获取或设置日历中可选日期范围的结束日期。
  • IsTodayHighlighted: 获取或设置是否高亮显示今天的日期。
  • SelectedDateFormat: 获取或设置 DatePicker 显示日期的格式(Short 或 Long)。

常用事件:

  • SelectedDateChanged: 当 DatePicker 中选定日期发生变化时触发的事件。
  • CalendarOpened: 当日历部分打开时触发的事件。
  • CalendarClosed: 当日历部分关闭时触发的事件。

SelectedDateChanged 事件处理程序

  1. private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3. MessageBox.Show(datePicker.Text);
  4. }
PasswordBox:密码框
<PasswordBox Name="passwordBox" Width="200" PasswordChanged="PasswordBox_PasswordChanged"/>

常用属性:

  • Password: 获取或设置密码框中的密码字符串。
  • MaxLength: 获取或设置密码框中可以输入的最大字符数。
  • IsEnabled: 指示 PasswordBox 是否启用。
  • IsReadOnly: 指示 PasswordBox 是否为只读(通常不常用在 PasswordBox 上)。
  • HorizontalAlignment: 水平对齐方式。
  • VerticalAlignment: 垂直对齐方式。
  • PasswordChar:密码不可见样式

常用事件:

  • PasswordChanged: 当密码框中的内容发生变化时触发的事件。

PasswordChanged 事件处理程序

  1. private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
  2. {
  3. MessageBox.Show(passwordBox.Password);
  4. }
Slider:滑块
  1. <Slider Name="slider" Width="200" Height="30"
  2. Minimum="0" Maximum="100" Value="50"
  3. TickFrequency="10" IsSnapToTickEnabled="True"
  4. ValueChanged="Slider_ValueChanged"/>

常用属性:

  • MinimumMaximum:定义了滑块的最小值和最大值,用户只能在这个范围内滑动。
  • Value:滑块当前的值,用户移动滑块时这个值会更新。
  • TickFrequency:设置滑块刻度之间的间隔,例如每隔多少单位显示一个刻度。
  • IsSnapToTickEnabled:如果设置为 True,滑块的值会自动捕捉到最近的刻度。
  • Orientation:可以设置为 Horizontal 或 Vertical,决定滑块是水平还是垂直。
  • IsMoveToPointEnabled:如果设置为 True,用户点击滑块轨道的某个位置时滑块会移动到该位置。
  • TickPlacement:决定刻度线的位置,可以设置为 None、TopLeft、BottomRight 或 Both。
  • LargeChangeSmallChange:定义了滑块在按下 Page Up/Page Down 或方向键时的移动步长。

常用事件:

  • ValueChanged: 当 Slider 的值发生变化时触发的事件。

ValueChanged 事件处理程序

  1. private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  2. {
  3. MessageBox.Show(slider.Value+"");
  4. }
ProgressBar:进度条
  1. <ProgressBar Name="progressBar" Width="200" Height="30" Minimum="0"
  2. Maximum="100" Value="50"
  3. ValueChanged="progressBar_ValueChanged"/>

常用属性:

  • MinimumMaximum:定义了进度条的最小值和最大值,用户只能在这个范围内设置值。
  • Value:进度条当前的值,可以程序matically 更新以显示进度。
  • IsIndeterminate:如果设置为 True,进度条进入不确定模式,表示正在进行无法预估时间的操作。来回流动
  • Orientation:可以设置为 Horizontal 或 Vertical,决定进度条的方向。
  • Foreground:设置进度条的前景色,即表示进度的颜色。
  • ValueChanged:当进度条的值发生变化时触发,可以用于实时更新 UI 或进行其他操作。

常用事件:

  • ValueChanged: 当 ProgressBar 的值发生变化时触发的事件。

ValueChanged 事件处理程序

  1. private void progressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  2. {
  3. MessageBox.Show(progressBar.Value+"");
  4. }
TextBlock:只读文本控件
<TextBox Width="200" Height="30" Text="Enter text here"/>

常用属性

  • Text: 设置或获取 TextBlock 中显示的文本内容。
  • Foreground: 设置或获取 TextBlock 文本的前景色。
  • Background: 设置或获取 TextBlock 文本的背景色。
  • FontSize: 设置或获取 TextBlock 文本的字体大小。
  • FontFamily: 设置或获取 TextBlock 文本的字体族。
  • FontWeight: 设置或获取 TextBlock 文本的字体粗细(例如,Normal、Bold)。
  • FontStyle: 设置或获取 TextBlock 文本的字体样式(例如,Normal、Italic)。
  • TextWrapping: 设置或获取 TextBlock 文本的换行方式(例如,NoWrap、Wrap、WrapWithOverflow)。
  • TextAlignment: 设置或获取 TextBlock 文本的对齐方式(例如,Left、Center、Right、Justify)。
  • TextDecorations: 设置或获取 TextBlock 文本的装饰(例如,下划线、删除线)。
  • Padding: 设置或获取 TextBlock 的内部间距。

常用事件

TextBlock 本身是一个显示控件,因此它没有输入事件。但是,它继承自 FrameworkElement,因此可以处理一些基本的事件,例如:

  • MouseLeftButtonDown: 处理鼠标左键按下事件。
  • MouseLeftButtonUp: 处理鼠标左键抬起事件。
  • MouseEnter: 处理鼠标进入控件事件。
  • MouseLeave: 处理鼠标离开控件事件。
Lable:标签 显示文本控件
  1. <Label Content="Username:"/>
  2. <TextBox Width="200" Height="30" Margin="0,5"/>
  3. <Label Content="Password:"/>
  4. <PasswordBox Width="200" Height="30" Margin="0,5"/>
  5. <Button Content="Login" Width="100" Height="30" Margin="0,10"/>

常用属性

  • Content: 设置或获取 Label 中显示的文本内容。
  • Target: 设置或获取 Label 关联的目标控件,用于指示 Label 的用途。

Target用法

  1. <Grid Margin="10">
  2. <Grid.ColumnDefinitions>
  3. <ColumnDefinition Width="Auto"/>
  4. <ColumnDefinition Width="*"/>
  5. </Grid.ColumnDefinitions>
  6. <Grid.RowDefinitions>
  7. <RowDefinition Height="Auto"/>
  8. <RowDefinition Height="Auto"/>
  9. </Grid.RowDefinitions>
  10. <Label Content="_Username:" Target="{Binding ElementName=usernameTextBox}"
  11. VerticalAlignment="Center"/>
  12. <TextBox x:Name="usernameTextBox" Grid.Column="1" Width="200"
  13. Height="30" Margin="5"/>
  14. <Label Content="_Password:" Target="{Binding ElementName=passwordBox}"
  15. Grid.Row="1" VerticalAlignment="Center"/>
  16. <PasswordBox x:Name="passwordBox" Grid.Column="1" Grid.Row="1" Width="200"
  17. Height="30" Margin="5"/>
  18. </Grid>
  • Label 的 Content 属性包含一个下划线字符 (_) ,表示下一个字符是加速键。例如,_Username: 表示 U 是加速键。
  • Target 属性绑定到目标控件的名称(使用 {Binding ElementName=...}),当用户按下 Alt 键并激活加速键时,焦点会自动移动到目标控件。
  • x:Name 属性用于给控件命名,以便在 Binding 表达式中引用它们。
  • 按 Alt+U 会将焦点移动到用户名输入框(TextBox)。
  • 按 Alt+P 会将焦点移动到密码输入框(PasswordBox)。
ListBox:显示可选择项的列表
  1. <ListBox Width="200" Height="100">
  2. <ListBoxItem>Item 1</ListBoxItem>
  3. <ListBoxItem>Item 2</ListBoxItem>
  4. <ListBoxItem>Item 3</ListBoxItem>
  5. </ListBox>

常用属性

  • ItemsSource: 设置或获取 ListBox 的数据源。
  • SelectedItem: 获取或设置当前选定的项目。
  • SelectedIndex: 获取或设置当前选定项目的索引。
  • SelectionMode: 设置 ListBox 的选择模式。可以是 Single(单选),Multiple(多选),或 Extended(扩展选择)。
  • ItemTemplate: 定义如何显示 ListBox 中的每个项目。

常用事件

  • SelectionChanged: 当选择的项目发生更改时触发。
  1. <ListBox x:Name="myListBox" Width="200" Height="100"
  2. SelectionChanged="ListBox_SelectionChanged">
  3. <ListBoxItem Content="Item 1"/>
  4. <ListBoxItem Content="Item 2"/>
  5. <ListBoxItem Content="Item 3"/>
  6. </ListBox>
  1. private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3. ListBox listBox = sender as ListBox;
  4. ListBoxItem selectedItem = listBox.SelectedItem as ListBoxItem;
  5. if (selectedItem != null)
  6. {
  7. MessageBox.Show("Selected item: " + selectedItem.Content.ToString());
  8. }
  9. }
  1. <ListBox x:Name="myListBox" Width="200" Height="100"
  2. SelectionChanged="ListBox_SelectionChanged">
  3. <ListBox.ItemTemplate>
  4. <DataTemplate>
  5. <StackPanel Orientation="Horizontal">
  6. <TextBlock Text="{Binding Name}" Width="100"/>
  7. <TextBlock Text="{Binding Age}" Width="50"/>
  8. </StackPanel>
  9. </DataTemplate>
  10. </ListBox.ItemTemplate>
  11. </ListBox>
  1. public partial class MainWindow : Window
  2. {
  3. public MainWindow()
  4. {
  5. InitializeComponent();
  6. List<Person> people = new List<Person>
  7. {
  8. new Person { Name = "Alice", Age = 30 },
  9. new Person { Name = "Bob", Age = 25 },
  10. new Person { Name = "Charlie", Age = 35 }
  11. };
  12. myListBox.ItemsSource = people;
  13. }
  14. private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  15. {
  16. ListBox listBox = sender as ListBox;
  17. Person selectedPerson = listBox.SelectedItem as Person;
  18. if (selectedPerson != null)
  19. {
  20. MessageBox.Show("Selected person: " + selectedPerson.Name + ", Age: "
  21. + selectedPerson.Age);
  22. }
  23. }
  24. }
  25. public class Person
  26. {
  27. public string Name { get; set; }
  28. public int Age { get; set; }
  29. }
  • ItemsSource: 通过绑定数据源(例如,List<Person>)来填充 ListBox。
  • ItemTemplate: 使用 DataTemplate 定义每个项目的显示方式。
  • SelectionChanged 事件: 当用户选择项目时,显示所选项目的信息。
DataGrid:数据表格控件
 <DataGrid x:Name="dataGrid" AutoGenerateColumns="True" Margin="10"/>
  1. ……
  2. List<Person> people = new List<Person>
  3. {
  4. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  5. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  6. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com" }
  7. };
  8. dataGrid.ItemsSource = people;
  9. ……
  10. public class Person
  11. {
  12. public string Name { get; set; }
  13. public int Age { get; set; }
  14. public string Email { get; set; }
  15. }

常用属性

  • ItemsSource: 设置或获取 DataGrid 的数据源。
  • AutoGenerateColumns: 设置为 True 时,自动生成列;设置为 False 时,需要手动定义列。
  • Columns: 定义 DataGrid 中的列集合。
  • SelectionMode: 设置选择模式,单选或多选。
  • CanUserAddRows: 设置用户是否可以添加新行。
  • CanUserDeleteRows: 设置用户是否可以删除行。
  • CanUserSortColumns: 设置用户是否可以排序列。

常用事件

  • SelectionChanged: 当选择的项目发生更改时触发。
  • CellEditEnding: 当单元格编辑即将结束时触发。
  • RowEditEnding: 当行编辑即将结束时触发。
  • LoadingRow: 当行加载时触发。

自定义列

  1. <Grid>
  2. <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Margin="10"
  3. SelectionChanged="DataGrid_SelectionChanged">
  4. <DataGrid.Columns>
  5. <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
  6. <DataGridTextColumn Header="Age" Binding="{Binding Age}" Width="*"/>
  7. <DataGridTextColumn Header="Email" Binding="{Binding Email}" Width="*"/>
  8. </DataGrid.Columns>
  9. </DataGrid>
  10. </Grid>
  1. ……
  2. List<Person> people = new List<Person>
  3. {
  4. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  5. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  6. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com" }
  7. };
  8. dataGrid.ItemsSource = people;
  9. ……
  10. private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
  11. {
  12. DataGrid dataGrid = sender as DataGrid;
  13. Person selectedPerson = dataGrid.SelectedItem as Person;
  14. if (selectedPerson != null)
  15. {
  16. MessageBox.Show("Selected person: " + selectedPerson.Name);
  17. }
  18. }
  19. ……
  20. public class Person
  21. {
  22. public string Name { get; set; }
  23. public int Age { get; set; }
  24. public string Email { get; set; }
  25. }
  • AutoGenerateColumns: 设置为 False,这样可以自定义列。
  • DataGridTextColumn: 用于显示文本数据的列,Header 属性设置列标题,Binding 属性绑定到数据源中的相应属性。
  • SelectionChanged 事件: 当选择的项目发生更改时,显示所选项目的信息。

编辑功能

  1. <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Margin="10"
  2. CanUserAddRows="True" CanUserDeleteRows="True"
  3. CanUserSortColumns="True">
  4. <DataGrid.Columns>
  5. <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
  6. <DataGridTextColumn Header="Age" Binding="{Binding Age}" Width="*"/>
  7. <DataGridTextColumn Header="Email" Binding="{Binding Email}" Width="*"/>
  8. </DataGrid.Columns>
  9. </DataGrid>
  1. ……
  2. List<Person> people = new List<Person>
  3. {
  4. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  5. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  6. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com" }
  7. };
  8. dataGrid.ItemsSource = people;
  9. ……
  10. public class Person
  11. {
  12. public string Name { get; set; }
  13. public int Age { get; set; }
  14. public string Email { get; set; }
  15. }
ListView:显示列表数据
  1. <ListView x:Name="listView" Width="350" Height="250">
  2. <ListView.View>
  3. <GridView>
  4. <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"
  5. Width="120"/>
  6. <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}"
  7. Width="50"/>
  8. <GridViewColumn Header="Email" DisplayMemberBinding="{Binding Email}"
  9. Width="150"/>
  10. </GridView>
  11. </ListView.View>
  12. </ListView>
  1. List<Person> people = new List<Person>
  2. {
  3. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  4. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  5. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com"
  6. }
  7. };
  8. listView.ItemsSource = people;

常用属性

  • ItemsSource: 设置或获取 ListView 的数据源。
  • View: 定义 ListView 的显示模式,可以是 GridView、TileView 等。
  • SelectedItem: 获取或设置当前选定的项目。
  • SelectedIndex: 获取或设置当前选定项目的索引。
  • SelectionMode: 设置选择模式,单选或多选。

常用事件

  • SelectionChanged: 当选择的项目发生更改时触发。

详细视图

  1. <ListView x:Name="listView" Width="350" Height="250" SelectionChanged="ListView_SelectionChanged">
  2. <ListView.View>
  3. <GridView>
  4. <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"
  5. Width="120"/>
  6. <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}"
  7. Width="50"/>
  8. <GridViewColumn Header="Email" DisplayMemberBinding="{Binding Email}"
  9. Width="150"/>
  10. </GridView>
  11. </ListView.View>
  12. </ListView>
  1. public partial class MainWindow : Window
  2. {
  3. public MainWindow()
  4. {
  5. InitializeComponent();
  6. List<Person> people = new List<Person>
  7. {
  8. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  9. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  10. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com" }
  11. };
  12. listView.ItemsSource = people;
  13. }
  14. private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
  15. {
  16. ListView listView = sender as ListView;
  17. Person selectedPerson = listView.SelectedItem as Person;
  18. if (selectedPerson != null)
  19. {
  20. MessageBox.Show("Selected person: " + selectedPerson.Name);
  21. }
  22. }
  23. }
  24. public class Person
  25. {
  26. public string Name { get; set; }
  27. public int Age { get; set; }
  28. public string Email { get; set; }
  29. }

自定义项模板

  1. <ListView x:Name="listView" Width="350" Height="250">
  2. <ListView.ItemTemplate>
  3. <DataTemplate>
  4. <StackPanel Orientation="Horizontal">
  5. <TextBlock Text="{Binding Name}" Width="120"/>
  6. <TextBlock Text="{Binding Age}" Width="50"/>
  7. <TextBlock Text="{Binding Email}" Width="150"/>
  8. </StackPanel>
  9. </DataTemplate>
  10. </ListView.ItemTemplate>
  11. </ListView>
  1. public partial class MainWindow : Window
  2. {
  3. public MainWindow()
  4. {
  5. InitializeComponent();
  6. List<Person> people = new List<Person>
  7. {
  8. new Person { Name = "Alice", Age = 30, Email = "alice@example.com" },
  9. new Person { Name = "Bob", Age = 25, Email = "bob@example.com" },
  10. new Person { Name = "Charlie", Age = 35, Email = "charlie@example.com" }
  11. };
  12. listView.ItemsSource = people;
  13. }
  14. }
  15. public class Person
  16. {
  17. public string Name { get; set; }
  18. public int Age { get; set; }
  19. public string Email { get; set; }
  20. }
  • View: 使用 GridView 来定义详细视图,每个 GridViewColumn 定义一列。
  • ItemTemplate: 使用 DataTemplate 定义自定义的项布局。
  • SelectionChanged 事件: 当用户选择项目时,显示所选项目的信息。
Image:图片
  1. <Image x:Name="myImage" Source="example.jpg" Width="200" Height="150"
  2. ImageFailed="Image_ImageFailed" ImageOpened="Image_ImageOpened"/>

常用属性

  • Source: 设置或获取图像的源路径,可以是相对路径或绝对路径。
  • Stretch: 指定如何拉伸图像以适应控件的大小。常用值包括 None、Fill、Uniform、UniformToFill。
  • StretchDirection: 指定图像可以拉伸的方向。值可以是 UpOnly、DownOnly 或 Both。
  • Width: 设置图像的宽度。
  • Height: 设置图像的高度。
  1. private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
  2. {
  3. MessageBox.Show("Image loading failed: " + e.ErrorException.Message);
  4. }
  5. private void Image_ImageOpened(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("Image successfully loaded.");
  8. }
  • Source: 通过 BitmapImage 设置图片源,可以指定图片的路径。
  • Stretch: 设置图像的拉伸模式,使其在控件中适当显示。
  • ImageFailed 事件: 当图像加载失败时,显示错误消息。
  • ImageOpened 事件: 当图像成功加载时,显示成功消息。
ToggleButton:切换状态按钮控件
  1. <ToggleButton x:Name="toggleButton" Content="Toggle Me" Width="100" Height="50"
  2. IsThreeState="True" Checked="ToggleButton_Checked"
  3. Unchecked="ToggleButton_Unchecked"
  4. Indeterminate="ToggleButton_Indeterminate"/>
  1. private void ToggleButton_Checked(object sender, RoutedEventArgs e)
  2. {
  3. MessageBox.Show("ToggleButton is Checked");
  4. }
  5. private void ToggleButton_Unchecked(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("ToggleButton is Unchecked");
  8. }
  9. private void ToggleButton_Indeterminate(object sender, RoutedEventArgs e)
  10. {
  11. MessageBox.Show("ToggleButton is Indeterminate");
  12. }
  • IsChecked: 使用该属性来确定 ToggleButton 的当前状态。
  • IsThreeState: 设置为 True 时,ToggleButton 支持三态(选中、未选中、不确定)。
  • Checked、Unchecked、Indeterminate 事件: 处理 ToggleButton 在不同状态下的事件。

常用属性

  • IsChecked: 获取或设置 ToggleButton 的状态,true 表示选中,false 表示未选中,null 表示不确定状态。
  • Content: 设置或获取 ToggleButton 的内容,可以是文本、图像或其他控件。
  • IsThreeState: 设置或获取 ToggleButton 是否支持三态(true 表示支持三态,false 表示只支持两态)。

常用事件

  • Checked: 当 ToggleButton 被选中时触发。
  • Unchecked: 当 ToggleButton 被取消选中时触发。
  • Indeterminate: 当 ToggleButton 处于不确定状态时触发。
菜单导航控件
MenuItem:菜单
  1. <Menu>
  2. <MenuItem Header="_File">
  3. <MenuItem Header="_New" Click="NewMenuItem_Click"/>
  4. <MenuItem Header="_Open" Click="OpenMenuItem_Click"/>
  5. <MenuItem Header="_Save" Click="SaveMenuItem_Click"/>
  6. <Separator/>
  7. <MenuItem Header="_Exit" Click="ExitMenuItem_Click"/>
  8. </MenuItem>
  9. <MenuItem Header="_Edit">
  10. <MenuItem Header="_Cut" Click="CutMenuItem_Click"/>
  11. <MenuItem Header="_Copy" Click="CopyMenuItem_Click"/>
  12. <MenuItem Header="_Paste" Click="PasteMenuItem_Click"/>
  13. </MenuItem>
  14. </Menu>

常用属性:

  • Header: 获取或设置显示在 MenuItem 上的文本。第一个加入下划线"_",表示alt + 快捷方式打开
  • Icon: 获取或设置显示在 MenuItem 左侧的图标。
  • IsCheckable: 获取或设置 MenuItem 是否可以被选中或取消选中。
  • IsChecked: 获取或设置 MenuItem 是否被选中。
  • InputGestureText: 获取或设置显示在 MenuItem 右侧的快捷键文本。仅显示提示作用
  • Items: 获取此 MenuItem 的子菜单项集合。
  • StaysOpenOnClick: 指示点击 MenuItem 后是否保持菜单打开。
  • Separator:在菜单中增加一个隔行线

常用事件:

  • Click: 当 MenuItem 被点击时触发的事件。
  • Checked: 当 MenuItem 被选中时触发的事件(仅当 IsCheckable 为 True 时适用)。
  • Unchecked: 当 MenuItem 被取消选中时触发的事件(仅当 IsCheckable 为 True 时适用)。

事件处理程序

  1. private void NewMenuItem_Click(object sender, RoutedEventArgs e)
  2. {
  3. MessageBox.Show("New");
  4. }
  5. private void OpenMenuItem_Click(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("Open");
  8. }
  9. private void SaveMenuItem_Click(object sender, RoutedEventArgs e)
  10. {
  11. MessageBox.Show("New");
  12. }
  13. private void ExitMenuItem_Click(object sender, RoutedEventArgs e)
  14. {
  15. MessageBox.Show("Exit");
  16. }
  17. private void CutMenuItem_Click(object sender, RoutedEventArgs e)
  18. {
  19. MessageBox.Show("Cut");
  20. }
  21. private void CopyMenuItem_Click(object sender, RoutedEventArgs e)
  22. {
  23. MessageBox.Show("Copy");
  24. }
  25. private void PasteMenuItem_Click(object sender, RoutedEventArgs e)
  26. {
  27. MessageBox.Show("Paste");
  28. }
ContextMenu:上下文菜单
  1. <TextBox x:Name="textBox" Width="200" Height="30" VerticalAlignment="Top" HorizontalAlignment="Center">
  2. <TextBox.ContextMenu>
  3. <ContextMenu Opened="ContextMenu_Opened">
  4. <MenuItem Header="Cut" Click="CutMenuItem_Click"/>
  5. <MenuItem Header="Copy" Click="CopyMenuItem_Click"/>
  6. <MenuItem Header="Paste" Click="PasteMenuItem_Click"/>
  7. </ContextMenu>
  8. </TextBox.ContextMenu>
  9. </TextBox>
  10. <Button x:Name="button" Content="按钮" Width="200" Height="30"
  11. VerticalAlignment="Top" HorizontalAlignment="Center">
  12. <Button.ContextMenu>
  13. <ContextMenu Closed="ContextMenu_Closed">
  14. <MenuItem Header="Cut" Click="CutMenuItem_Click"/>
  15. <MenuItem Header="Copy" Click="CopyMenuItem_Click"/>
  16. <MenuItem Header="Paste" Click="PasteMenuItem_Click"/>
  17. </ContextMenu>
  18. </Button.ContextMenu>
  19. </Button>

事件处理程序

  1. private void CutMenuItem_Click(object sender, RoutedEventArgs e)
  2. {
  3. MessageBox.Show("Cut");
  4. }
  5. private void CopyMenuItem_Click(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("Copy");
  8. }
  9. private void PasteMenuItem_Click(object sender, RoutedEventArgs e)
  10. {
  11. MessageBox.Show("Paste");
  12. }
  13. private void ContextMenu_Opened(object sender, RoutedEventArgs e)
  14. {
  15. MessageBox.Show("Open");
  16. }
  17. private void ContextMenu_Closed(object sender, RoutedEventArgs e)
  18. {
  19. MessageBox.Show("Close");
  20. }

常用属性

  • Items: 获取此 ContextMenu 的子菜单项集合。
  • IsOpen: 获取或设置 ContextMenu 是否可见。
  • PlacementTarget: 获取或设置 ContextMenu 的放置目标对象。
  • Placement: 获取或设置 ContextMenu 的放置位置。
  • HorizontalOffset: 获取或设置 ContextMenu 相对于 PlacementTarget 水平方向的偏移量。
  • VerticalOffset: 获取或设置 ContextMenu 相对于 PlacementTarget 垂直方向的偏移量.

常用事件

  • OpenedClosed 事件处理程序在 ContextMenu 打开和关闭时显示消息框。
ToolBar:创建工具栏
  1. <DockPanel>
  2. <!-- ToolBarTray 用于容纳多个 ToolBar -->
  3. <ToolBarTray DockPanel.Dock="Top">
  4. <!-- 定义一个 ToolBar -->
  5. <ToolBar>
  6. <Button Content="New" Click="NewButton_Click">
  7. <Button.ToolTip>
  8. <ToolTip Content="Create a new file"/>
  9. </Button.ToolTip>
  10. </Button>
  11. <Button Content="Open" Click="OpenButton_Click">
  12. <Button.ToolTip>
  13. <ToolTip Content="Open an existing file"/>
  14. </Button.ToolTip>
  15. </Button>
  16. <Button Content="Save" Click="SaveButton_Click">
  17. <Button.ToolTip>
  18. <ToolTip Content="Save the current file"/>
  19. </Button.ToolTip>
  20. </Button>
  21. <Separator/>
  22. <ToggleButton Content="Bold" Click="BoldButton_Click">
  23. <ToggleButton.ToolTip>
  24. <ToolTip Content="Toggle bold text"/>
  25. </ToggleButton.ToolTip>
  26. </ToggleButton>
  27. <Separator/>
  28. <ComboBox Width="100" SelectionChanged="FontComboBox_SelectionChanged">
  29. <ComboBoxItem Content="Arial"/>
  30. <ComboBoxItem Content="Calibri"/>
  31. <ComboBoxItem Content="Times New Roman"/>
  32. </ComboBox>
  33. </ToolBar>
  34. </ToolBarTray>
  35. <!-- 主内容区域 -->
  36. <TextBox Name="textBox" Margin="10" VerticalScrollBarVisibility="Auto"
  37. AcceptsReturn="True"/>
  38. </DockPanel>

常用属性

  • Band: 获取或设置工具栏所在的带的索引(仅用于 ToolBarTray)。
  • BandIndex: 获取或设置工具栏在带中的位置索引。
  • Orientation: 获取或设置工具栏的布局方向(水平或垂直)。
  • ToolBarOverflowPanel: 获取溢出面板,用于在工具栏空间不足时存放多余的控件。
  • 使用 Band 和 BandIndex 属性来控制 ToolBar 在 ToolBarTray 中的位置。

常用事件

  • LoadedUnloaded 事件处理程序在 ToolBar 加载和卸载时显示消息框。
  1. private void NewButton_Click(object sender, RoutedEventArgs e)
  2. {
  3. textBox.Clear();
  4. }
  5. private void OpenButton_Click(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("Open");
  8. }
  9. private void SaveButton_Click(object sender, RoutedEventArgs e)
  10. {
  11. MessageBox.Show("Save");
  12. }
  13. private void BoldButton_Click(object sender, RoutedEventArgs e)
  14. {
  15. textBox.FontWeight = FontWeights.Bold;
  16. }
  17. private void FontComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  18. {
  19. ComboBox? comboBox = sender as ComboBox;
  20. this.textBox.Text += $"\r\n{comboBox.SelectedItem}";
  21. }
TreeView:树状视图
  1. <TreeView x:Name="treeView" SelectedItemChanged="treeView_SelectedItemChanged">
  2. <TreeViewItem Header="Root">
  3. <TreeViewItem Header="C-01">
  4. <TreeViewItem Header="C-01-01" />
  5. <TreeViewItem Header="C-01-02" />
  6. </TreeViewItem>
  7. <TreeViewItem Header="C-02" />
  8. <TreeViewItem Header="C-03" />
  9. </TreeViewItem>
  10. </TreeView>

常用属性

  • Items: 获取此 TreeViewItem 的子节点集合。
  • IsExpanded: 获取或设置是否展开该 TreeViewItem。
  • Header: 获取或设置显示在 TreeViewItem 上的文本或内容。
  • IsSelected: 获取或设置是否选择该 TreeViewItem。
  • Tag: 获取或设置与该 TreeViewItem 关联的对象。

常用事件

  • SelectedItemChanged 事件处理程序在选择的项发生变化时显示消息框,显示当前选择的节点的标题。
  • Collapsed: 当 TreeViewItem 折叠时触发的事件。
  • Expanded: 当 TreeViewItem 展开时触发的事件。

SelectedItemChanged 事件处理程序

  1. private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
  2. {
  3. MessageBox.Show(((TreeViewItem)treeView.SelectedItem).Header as string);
  4. }
TabControl:选项卡
  1. <TabControl x:Name="tabControl" SelectionChanged="TabControl_SelectionChanged">
  2. <TabItem Header="Tab01">
  3. <TextBlock Text="01"/>
  4. </TabItem>
  5. <TabItem Header="Tab02">
  6. <TextBlock Text="02"/>
  7. </TabItem>
  8. </TabControl>
  9. <TextBlock x:Name="tb" Height="30" Width="100" />

常用属性

  • Items: 获取此 TabControl 的选项卡集合。
  • SelectedIndex: 获取或设置当前选中的选项卡的索引。
  • SelectedItem: 获取或设置当前选中的选项卡。
  • TabStripPlacement: 获取或设置选项卡的位置(顶部、底部、左侧或右侧)。
  • TabStripPlacement: 获取或设置选项卡标题的对齐方式。

常用事件

  • SelectionChanged 事件处理程序在选择的选项卡发生变化时显示消息框,显示当前选择的选项卡的标题。
  • PreviewMouseDown: 当用户点击选项卡标题时触发的事件。
  • PreviewMouseMove: 当用户移动鼠标到选项卡标题上时触发的事件。

SelectionChanged事件处理程序

  1. private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3. TabItem tabItem = (tabControl.SelectedItem) as TabItem;
  4. tb.Text = tabItem.Header.ToString();
  5. }
Expander:折叠控件
  1. <Expander Header="Details" IsExpanded="True" Expanded="Expander_Expanded"
  2. Collapsed="Expander_Collapsed">
  3. <TextBlock Text="Expander" />
  4. </Expander>

常用属性

  • Header: 获取或设置 Expander 控件的标题。
  • IsExpanded: 获取或设置一个值,指示 Expander 控件当前是否处于展开状态。
  • Content: 获取或设置 Expander 控件的内容。

常用事件

  • Expanded 事件处理程序在 Expander 控件展开时显示消息框。
  • Collapsed 事件处理程序在 Expander 控件折叠时显示消息框。
  1. private void Expander_Expanded(object sender, RoutedEventArgs e)
  2. {
  3. MessageBox.Show("展开");
  4. }
  5. private void Expander_Collapsed(object sender, RoutedEventArgs e)
  6. {
  7. MessageBox.Show("关闭");
  8. }
信息提示控件
Popup:弹出式窗口
  1. <Button Content="按钮" Name="btn" Click="Button_Click_2"/>
  2. <Popup x:Name="popup" PlacementTarget="{Binding ElementName=btn}" Placement="Bottom">
  3. <TextBlock Text="textBlock" Background="AliceBlue" />
  4. </Popup>

常用属性

  • IsOpen: 获取或设置一个值,指示 Popup 是否处于打开状态。
  • Placement: 获取或设置 Popup 的位置相对于其放置目标的方式,可以是相对于左上角、右上角、底部等。
  • PlacementTarget: 获取或设置 Popup 的放置目标,即触发 Popup 显示的控件。
  • Child: 获取或设置 Popup 内容的根元素。

常用事件

  • Opened: 当 Popup 打

相关文章:

WPF 控件

<div id"content_views" class"htmledit_views"><p id"main-toc"><strong>目录</strong></p> WPF基础控件 按钮控件&#xff1a; Button:按钮 RepeatButton:长按按钮 RadioButton:单选按钮 数据显示控件 Te…...

VScode执行任务

背景 在vscode 中 如果执行命令需要传递进来参数&#xff0c;那么直接通过命令行终端的方式不太方便。通过task 任务的方式来进行启动执行&#xff0c;降低反复输入参数等繁琐工作。 首先可以查看vscode 官方文档 task 启动 crtl shift p .vscode/task.json 示例 执行cp…...

MySQL(数据类型)

目录 1. 数值类型 2. bit类型 3.小数类型 3. 字符串类型 4 日期和时间类型 5. enum和set 1. 数值类型 对标C语言&#xff1a; tinyint->char(1字节)&#xff1a; 有符号&#xff1a;127 ~ 255 无符号&#xff1a;0 ~ -128。 smalli…...

pytorch中的tqdm库

tqdm 是一个 Python 的进度条库&#xff0c;名字来源于阿拉伯语 "taqaddum"&#xff08;意思是“进步”&#xff09;。它以简单易用、高效著称&#xff0c;常用于循环操作中显示进度信息。 基本用法 1. 普通循环 tqdm 可以轻松为 for 循环添加进度条&#xff1a; …...

NoSQL大数据存储技术测试(5)MongoDB的原理和使用

单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是&#xff08;&#xff09; 已经不使用主从复制的模式 在实际应用场景中&#xff0c; Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片&#xff0c; 不支持手动切分 &#xff08;我的答案&#xff09; 每…...

【Golang】Go语言编程思想(六):Channel,第四节,Select

使用 Select 如果此时我们有多个 channel&#xff0c;我们想从多个 channel 接收数据&#xff0c;谁来的快先输出谁&#xff0c;此时应该怎么做呢&#xff1f;答案是使用 select&#xff1a; package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …...

Vue2简介

一、官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ 二、介绍与描述 动态构建用户界面的渐进式 JavaScript 框架 作者: 尤雨溪 三、Vue 的特点 遵循 MVVM 模式 编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发 它本身只关注 UI, 也可以引入其它第三…...

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展&#xff0c;H5流媒体播放器已成为现代网络视频播放的重要工具。其中&#xff0c;EasyPlayer.js播放器作为一款功能强大的H5播放器&#xff0c;凭借其全面的协议支持、多种解码方式以及跨平台兼容性&#xff0c;赢得了广泛的关注和应用。 那么要在iOS上…...

ChatGPT Pro是什么

ChatGPT Pro 和 ChatGPT Plus 的区别主要体现在功能范围、适用场景和目标用户上。 ChatGPT Plus 功能 • 价格&#xff1a;20美元/月。 • 目标用户&#xff1a;针对个人用户设计。 • 主要特点&#xff1a; • 在高峰期响应速度更快。 • 使用高级模型&#xff08;如 GPT-4…...

基于Springboot汽车资讯网站【附源码】

基于Springboot汽车资讯网站 效果如下&#xff1a; 系统主页面 汽车信息页面 系统登陆页面 汽车信息推荐页面 经销商页面 留言反馈页面 用户管理页面 汽车信息页面 研究背景 随着信息技术的快速发展和互联网的普及&#xff0c;互联网已成为人们查找信息的重要场所。汽车资讯…...

MySQL-DQL之数据表操作

文章目录 零. 准备工作一. 简单查询1.查询所有的商品.2.查询商品名和商品价格.3.查询结果是表达式&#xff08;运算查询&#xff09;&#xff1a;将所有商品的价格10元进行显示. 二. 条件查询1. 比较查询2. 范围查询3. 逻辑查询4. 模糊查询5. 非空查询 三. 排序查询四. 聚合查询…...

Luckysheet 实现 excel 多人在线协同编辑(全功能实现增强版)

前言 感谢大家对 Multi person online edit(多人在线编辑器) 项目的支持&#xff0c;mpoe 项目使用 quill、luckysheet、canvas-editor 实现的 md、excel、word 在线协同编辑&#xff0c;欢迎大家Fork 代码&#xff0c;多多 Start哦~ Multi person online edit 多人协同编辑器…...

vue 给div增加title属性

省略号 移入显示文字 在很多时候&#xff0c;我们页面上其实有时候展示不出来很多很多文字的&#xff0c;这个时候我们就不得不对这个文字进行处理&#xff0c;但是我们鼠标放到文字上时&#xff0c;还想展示所有的文字&#xff0c;这种方式其实有2种 一Tooltip 文字提示 第一…...

设计模式之工厂模式:从汽车工厂到代码工厂

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 工厂模式概述 想象一下你走进一家4S店准备买车。作为顾客&#xff0c;你不需要知道汽车是如何被制造出来的&#xff0c;你只需要告诉销售顾问&a…...

人脸识别Adaface之libpytorch部署

目录 1. libpytorch下载2. Adaface模型下载3. 模型转换4. c推理4.1 前处理4.2 推理4.3 编译运行4.3.1 写CMakeLists.txt4.3.2 编译4.3.3 运行 1. libpytorch下载 参考&#xff1a; https://blog.csdn.net/liang_baikai/article/details/127849577 下载完成后&#xff0c;将其解…...

vue3+echarts+websocket分时图与K线图实时推送

一、父组件代码&#xff1a; <template> <div class"chart-box" v-loading"loading"> <!-- tab导航栏 --> <div class"tab-box"> <div class"tab-list"> <div v-for"(item, index) in tabList…...

小程序开发实战项目:构建简易待办事项列表

随着移动互联网的飞速发展&#xff0c;小程序以其便捷性、即用即走的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是电商平台的购物助手&#xff0c;还是餐饮行业的点餐系统&#xff0c;小程序都在各个领域发挥着巨大的作用。 小程序开发基础 1. 小程序简介 小程序是…...

SD Express 卡漏洞导致笔记本电脑和游戏机遭受内存攻击

Positive Technologies 最近发布的一份报告揭示了一个名为 DaMAgeCard 的新漏洞&#xff0c;攻击者可以利用该漏洞利用 SD Express 内存卡直接访问系统内存。 该漏洞利用了 SD Express 中引入的直接内存访问 (DMA) 功能来加速数据传输速度&#xff0c;但也为对支持该标准的设备…...

前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

需求&#xff1a;在做前端开发的时候&#xff0c;有的时候 这个项目需要 node 14 那个项目需要 node 16&#xff0c;我们也不能卸载 安装 。这岂不是很麻烦。这个时候 就需要 一个工具 来管理我们的 node 版本和 npm 版本。 下面就分享一个 nvm 工具 用来管理 node 版本。 这个…...

java之集合(详细-Map,Set,List)

1集合体系概述 1.1集合的概念 集合是一种容器&#xff0c;用来装数据的&#xff0c;类似于数组&#xff0c;但集合的大小可变&#xff0c;开发中也非常常用。 1.2集合分类 集合分为单列集合和多列集合 Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff…...

常见LeetCode-Saw200

用来记录需要知道见过的题型&#xff1a; LeetCode2-两数相加 说明&#xff1a;以链表的形势给了你每个位的数字&#xff0c;而且是逆序&#xff0c;直接从开头&#xff08;个位&#xff09;遍历相加。带上进位即可。有一个为空就直接计算另一个和进位。 LeetCode-3.无重复字符…...

Unity 制作一个视频播放器(打包后,可在外部编辑并放置新的视频)

效果展示&#xff1a; 在这里&#xff0c;我把视频名称&#xff08;Json&#xff09;和对应的视频资源都放在了StreamingAssets文件夹下&#xff0c;以便于打包后&#xff0c;客户还可以自己在外部增加、删除、修改对应的视频资料。 如有需要&#xff0c;请联细抠抠。...

MySQL-SQL语句

文章目录 一. SQL语句介绍二. SQL语句分类1. 数据定义语言&#xff1a;简称DDL(Data Definition Language)2. 数据操作语言&#xff1a;简称DML(Data Manipulation Language)3. 数据查询语言&#xff1a;简称DQL(Data Query Language)4. 数据控制语言&#xff1a;简称DCL(Data …...

腾讯微信大数据面试题及参考答案

DNS 协议是否使用 UDP? DNS(Domain Name System)协议主要使用 UDP(User Datagram Protocol),但也会使用 TCP(Transmission Control Protocol)。 UDP 是一种无连接的传输协议,它的特点是简单、高效。DNS 在进行域名解析时,大部分情况下使用 UDP。因为 UDP 的开销小,对…...

Python跳动的爱心

系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…...

计算机启动过程 | Linux 启动流程

注&#xff1a;本文为“计算机启动、 Linux 启动”相关文章合辑。 替换引文部分不清晰的图。 探索计算机的启动过程 Aleksandr Goncharov 2023/04/21 很多人对计算机的启动方式很感兴趣。只要设备开启&#xff0c;这就是魔法开始和持续的地方。在本文中&#xff0c;我们将概…...

反射简单介绍

反射就是从类里拿东西 有的人可能会想为什么不能用io流&#xff0c;从上往下一行一行的读也能获取类中的信息&#xff0c;为什么要用反射呢&#xff1f; 假如我们io流&#xff0c;从左到右一行一行的读取数据&#xff0c;如果碰到局部变量和成员变量同名&#xff0c;怎么区分&a…...

工具篇--GitHub Desktop 使用

文章目录 前言一、GitHub Desktop 的使用&#xff1a;1.1 通过官网下载GitHub Desktop和安装&#xff1a;1.2 安装和使用&#xff1a;1.2.1 填充自己的标识&#xff1a;1.2.3 克隆项目&#xff1a;1.2.4 git 常用忽略项配置&#xff1a; 二、代码的更新和提交&#xff1a;2.1 代…...

单臂路由配置

知识点 单臂路由指在路由器上的一个接口配置子接口&#xff08;逻辑接口&#xff09;来实现不同vlan间通信 路由器上的每个物理接口都可以配置多个子接口&#xff08;逻辑接口&#xff09; 公司的财务部、技术部和业务部有多台计算机&#xff0c;它们使用一台二层交换机进行互…...

河工oj第七周补题题解2024

A.GO LecturesⅠ—— Victory GO LecturesⅠ—— Victory - 问题 - 软件学院OJ 代码 统计 #include<bits/stdc.h> using namespace std;double b, w;int main() {for(int i 1; i < 19; i ) {for(int j 1; j < 19; j ) {char ch; cin >> ch;if(ch B) b …...