当前位置: 首页 > 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…...

如何用OpCore-Simplify轻松搞定黑苹果OpenCore配置?

如何用OpCore-Simplify轻松搞定黑苹果OpenCore配置&#xff1f; 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾想过自己动手装一个macOS系统…...

27.12MHz 3225 封装 10pF ±10ppm 晶振替代选型指南(含 TXC 等主流品牌)

一、需求背景在电子电路设计中&#xff0c;晶振作为时钟源&#xff0c;其参数匹配直接影响系统稳定性。本文针对 **27.12MHz、3.22.5mm&#xff08;3225 封装&#xff09;、负载电容 10pF、精度 10ppm、温度范围 - 40~85℃** 的晶振需求&#xff0c;整理主流品牌兼容替代型号&a…...

从TJA1050到SIT1050T:手把手教你搞定CAN收发器外围电路与PCB布局避坑

从TJA1050到SIT1050T&#xff1a;手把手教你搞定CAN收发器外围电路与PCB布局避坑 在汽车电子和工业控制领域&#xff0c;CAN总线因其出色的抗干扰能力和可靠性成为首选通信协议。但许多工程师在设计CAN收发器外围电路时&#xff0c;常因忽视数据手册中的关键细节而导致通信不稳…...

GitHub Copilot 默认启用训练之后 企业安全如何应对

文章目录前言一、这次政策改动&#xff0c;到底改了什么二、为什么企业不能只看“Business 和 Enterprise 不受影响”三、content exclusion 为什么挡不住所有风险四、从 IDE 到 Agent&#xff0c;企业研发边界已经变了五、企业现在就该做的几件事总结前言 GitHub 这次关于 Co…...

SAP中的核算架构体系。这是一个复杂的会计科目表(Chart of Accounts)组织结构,让我逐一解释每个层级及其相互关系

SAP中的核算架构体系。这是一个复杂的会计科目表&#xff08;Chart of Accounts&#xff09;组织结构&#xff0c;让我逐一解释每个层级及其相互关系。SAP核算架构全景图┌─────────────────────────────────────────────────…...

Obsidian模板库实战指南:从零构建高效知识管理系统

Obsidian模板库实战指南&#xff1a;从零构建高效知识管理系统 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirrors/ob/OB…...

保姆级教程:用迪文屏官方工具生成30x30点阵汉字库,搞定界面文本显示

嵌入式UI开发实战&#xff1a;迪文屏3030点阵汉字库生成全流程指南 在嵌入式设备的人机交互界面开发中&#xff0c;文本显示是最基础却最容易出问题的环节之一。许多开发者第一次使用迪文屏时&#xff0c;往往会被字库生成工具的参数设置难住——为什么明明生成了字库&#xf…...

解锁图像标注效率:LabelImg亮度调节功能提升标注准确性全指南

解锁图像标注效率&#xff1a;LabelImg亮度调节功能提升标注准确性全指南 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check…...

Android14 SurfaceFlinger启动流程与线程调度机制解析

1. SurfaceFlinger的启动入口与初始化流程 Android显示系统的核心服务SurfaceFlinger由init进程启动&#xff0c;这个设计保证了它在系统早期就能准备好图形合成能力。main函数作为入口点&#xff0c;首先做了一系列关键初始化&#xff1a; 设置Binder线程池的最大线程数为4&…...

Java 25记录模式深度实战:手把手带你用模式匹配解构嵌套记录,效率提升47%(JVM实测数据)

第一章&#xff1a;Java 25记录模式的演进脉络与核心突破记录模式&#xff08;Record Patterns&#xff09;作为 Java 21 首次以预览特性引入、并在 Java 22 进一步增强、最终于 Java 25 正式成为标准特性的关键语言机制&#xff0c;标志着 Java 在模式匹配演进道路上完成从“解…...