WPF 控件

news2024/12/17 0:04:13
            <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 initRichTextBo x()
  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 打

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker方式安装人人影视离线完整安装包

本文软件由网友 ルリデ 推荐&#xff1b; 上周&#xff0c;人人影视创始人宣布将人人影视二十年字幕数据开源分享 目前提供了两种使用方式&#xff1a; “在线应用” &#xff1a;意味着需要有互联网才可以使用。官方提供了网站&#xff1a;https://yyets.click “离线使用” …

opencv——(图像梯度处理、图像边缘化检测、图像轮廓查找和绘制、透视变换、举例轮廓的外接边界框)

一、图像梯度处理 1 图像边缘提取 cv2.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) 功能&#xff1a;用于对图像进行卷积操作。卷积是图像处理中的一个基本操作&#xff0c;它通过一个称为卷积核&#xff08;或滤波器&#xff09;的小矩阵在图像上…

物联网安全-ARMv8-M Trustzone 实操

前言 本文针对ARMv8m架构M23/M33 MCU安全特性使用进行介绍,以nxp LPC55xx系列和STM32L5xx系列为例,为大家阐述如何使用Trustzone技术提高物联网设备安全性,适合有一定平台安全基础的物联网设备开发人员、安全方案开发人员。 背景 为了提升平台安全性,ARM推出了ARMv8m架构…

深入理解偏向锁、轻量级锁、重量级锁

一、对象结构和锁状态 synchronized关键字是java中的内置锁实现&#xff0c;内置锁实际上就是个任意对象&#xff0c;其内存结构如下图所示 其中&#xff0c;Mark Word字段在64位虚拟机下占64bit长度&#xff0c;其结构如下所示 可以看到Mark Word字段有个很重要的作用就是记录…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

geoserver(1) 发布sql 图层 支持自定义参数

前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…

光谱相机

光谱相机是一种能够同时获取目标物体的空间图像信息和光谱信息的成像设备。 1、工作原理 光谱相机通过光学系统将目标物体的光聚焦到探测器上&#xff0c;在探测器前设置分光元件&#xff0c;如光栅、棱镜或滤光片等&#xff0c;将光按不同波长分解成多个光谱通道&#xff0c…

数智读书笔记系列008 智人之上:从石器时代到AI时代的信息网络简史

书名:智人之上&#xff1a;从石器时代到AI时代的信息网络简史 作者:&#xff3b;以&#xff3d;尤瓦尔赫拉利 译者:林俊宏 出版时间:2024-09-01 ISBN:9787521768527 中信出版集团制作发行 作者信息 尤瓦尔・赫拉利 1976 年出生于以色列海法&#xff0c;是牛津大学历史学…

MAC M3电脑在idea上搭建Spark环境并跑通第一个程序

我的电脑是Macbook Pro&#xff0c;最近在学习Spark&#xff0c;想要在idea里搭建Spark环境&#xff0c;为之后的Spark编程作准备。下面是在MAC版本的idea里配置Spark环境。 1. 准备工作 1.安装 JDK 确保Mac 上已经安装了 JDK 8 或更高版本。 可通过 java -version 查看是否…

WPF+MVVM案例实战与特效(三十八)- 封装一个自定义的数字滚动显示控件

文章目录 1、运行效果2、案例实现1、功能设计2、页面布局3、控件使用4、运行效果3、拓展:多数字自定义控件1、控件应用4、总结1、运行效果 在Windows Presentation Foundation (WPF)应用程序中,自定义控件允许开发者创建具有特定功能和外观的独特UI元素。本博客将介绍一个名…

Docker如何运行一个python脚本Hello World

Docker如何运行一个python脚本Hello World 1、编写Python的Hello World&#xff1a;script.py #!/usr/bin/python #_*_coding:utf-8_*_ print("Hello World") 2、Dockerfile文件 #拉取Docker环境 FROM python #设置工作目录 WORKDIR /app #将dockerfile同级文件copy到…

整数奇偶排序

整数奇偶排序 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定10个整数的序列&#xff0c;要求对其重新排序。排序要求: 1.奇数在前&#xff0c;偶数在后&#xff1b; 2.奇数按从大到小排序&#x…

泷羽sec学习打卡-brupsuite7搭建IP炮台

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-IP炮台搭建 搭建炮台服务端安装zmap1、更新系统和安装基础依赖&#xff…

自适应卡尔曼滤波(包括EKF、UKF、CKF等)的创新思路——该调什么、不该调什么

在调节自适应卡尔曼滤波时&#xff0c;需要注意的参数和矩阵都对滤波器的性能有直接影响。本文给出详细的说明&#xff0c;包括相关公式和 MATLAB 代码示例 文章目录 需要调节的参数1. **过程噪声协方差矩阵 Q Q Q**&#xff1a;2. **测量噪声协方差矩阵 R R R**&#xff1a;…

【C语言】浮点数的原理、整型如何转换成浮点数

众所周知C语言中浮点数占四个字节&#xff0c;无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢&#xff1f;其实物理存放还是按照整型存放的。 IEEE 754 单精度浮点数格式 浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中&#…

深入理解addEventListener中的第二个参数:listener

起因 首先&#xff0c;之前留给我们的一点东西&#xff0c;js的深入内容关键在addEventListener&#xff0c;这个函数中的参数&#xff0c;它们三个参数&#xff0c;分别为type、listener、options&#xff0c;当然在这里还有一些小的问题&#xff0c;比如mdn文档中它介绍到了另…

【密码学】ZUC祖冲之算法

一、ZUC算法简介 ZUC算法&#xff08;祖冲之算法&#xff09;是中国自主研发的一种流密码算法&#xff0c;2011年被3GPP批准成为4G国际标准&#xff0c;主要用于无线通信的加密和完整性保护。ZUC算法在逻辑上采用三层结构设计&#xff0c;包括线性反馈移位寄存器&#xff08;L…

详解下c语言下的多维数组和指针数组

在实际c语言编程中&#xff0c;三维及以上数组我们使用的很少&#xff0c;二维数组我们使用得较多。说到数组&#xff0c;又不得关联到指针&#xff0c;因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

npm内存溢出

项目过大运行项目内存溢出 报错代码 运行内存溢出 increase-memory-limit ‘“node --max-old-space-size8192”’ 不是内部或外部命令&#xff0c;也不是可运行的程序 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of m…