C# WPF入门学习主线篇(八)—— ListBox常见属性和事件 ...

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

C# WPF入门学习主线篇(八)—— ListBox常见属性和事件

欢迎来到C# WPF入门学习系列的第八篇。在前面的文章中,我们已经探讨了WPF中的Button、TextBox和Label控件的使用。今天,我们将深入了解WPF中的另一个常用控件——ListBox。本文将详细介绍ListBox的全部常见属性和事件,并通过示例代码展示如何在实际应用中使用这些功能。
一、ListBox的基础知识

ListBox 是WPF中的一个控件,用于显示一个可以选择的项目列表。用户可以从列表中选择一个或多个项目。
ListBox的根本定义

我们先来看看一个简单的 ListBox 定义:
  1. <Window x:Class="WpfApp.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         Title="MainWindow" Height="350" Width="525">
  5.     <Grid>
  6.         <ListBox x:Name="myListBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Height="300">
  7.             <ListBoxItem Content="Item 1" />
  8.             <ListBoxItem Content="Item 2" />
  9.             <ListBoxItem Content="Item 3" />
  10.         </ListBox>
  11.     </Grid>
  12. </Window>
复制代码
在这个示例中,我们定义了一个 ListBox 控件,并添加了三个 ListBoxItem 项目。如果列表数目高出ListBox的高度时会主动出现滚动条。

二、ListBox的常见属性

1. ItemsSource

ItemsSource 属性用于绑定 ListBox 的数据源。可以是数组、列表或任何实现了 IEnumerable 接口的聚集。
  1. <ListBox x:Name="myListBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Height="300"/>
复制代码
  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         myListBox.ItemsSource = new List<string> { "Item 1", "Item 2", "Item 3" };
  7.     }
  8. }
复制代码
2. SelectedItem

SelectedItem 属性用于获取或设置当前选定的项目。
  1. string selectedItem = myListBox.SelectedItem as string;
复制代码
3. SelectedIndex

SelectedIndex 属性用于获取或设置当前选定项目的索引。
  1. int selectedIndex = myListBox.SelectedIndex;
复制代码
4. SelectionMode

SelectionMode 属性用于设置选择模式。可以是 Single、Multiple 或 Extended。
  1. <ListBox x:Name="myListBox" SelectionMode="Multiple" />
复制代码
像如许可以做成选中列表中的某一项然后打印对应的值

代码如下:
  1. <ListBox x:Name="myListBox"
  2.             SelectionChanged="MyListBox_SelectionChanged"
  3.             SelectionMode="Single" HorizontalAlignment="Left" VerticalAlignment="Top" Width="302" Height="200" Margin="690,10,0,0">
  4.             <ListBoxItem Content="Item 1" />
  5.             <ListBoxItem Content="Item 2" />
  6.             <ListBoxItem Content="Item 3" />
  7. </ListBox>
复制代码
  1. // 见第三章第一节的SelectionChanged事件
  2. private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  3.         {
  4.             ListBox listBox = sender as ListBox;
  5.             var selectedItem = listBox.SelectedItem; // 获取选中的项
  6.             Console.WriteLine($"Selected Item: {selectedItem}");
  7.         }
复制代码
5. DisplayMemberPath

DisplayMemberPath 属性用于设置显示成员路径,当数据源为对象聚集时,指定显示对象的哪个属性。
  1. <ListBox x:Name="myListBox" DisplayMemberPath="Name" />
复制代码
示例

下面是一个包罗以上常见属性的完整示例:
  1. <ListBox x:Name="myListBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Height="300"
  2.          ItemsSource="{Binding Items}" DisplayMemberPath="Name" SelectionMode="Extended"/>
复制代码
  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         this.DataContext = this;
  7.         Items = new List<Item>
  8.         {
  9.             new Item { Name = "Item 1" },
  10.             new Item { Name = "Item 2" },
  11.             new Item { Name = "Item 3" }
  12.         };
  13.     }
  14.     public List<Item> Items { get; set; }
  15. }
  16. public class Item
  17. {
  18.     public string Name { get; set; }
  19. }
复制代码
三、ListBox的常见事件

1. SelectionChanged

SelectionChanged 事件在选择的项目发生更改时触发。
XAML代码

  1. <ListBox x:Name="myListBox" SelectionChanged="MyListBox_SelectionChanged"/>
复制代码
后台代码

  1. private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3.     ListBox listBox = sender as ListBox;
  4.     string selectedItem = listBox.SelectedItem as string;
  5.     MessageBox.Show($"Selected Item: {selectedItem}");
  6. }
复制代码
2. Loaded

Loaded 事件在控件加载完成时触发。
XAML代码

  1. <ListBox x:Name="myListBox" Loaded="MyListBox_Loaded"/>
复制代码
后台代码

  1. private void MyListBox_Loaded(object sender, RoutedEventArgs e)
  2. {
  3.     MessageBox.Show("ListBox Loaded");
  4. }
复制代码
3. MouseDoubleClick

MouseDoubleClick 事件在控件上检测到双击鼠标按钮时触发。
XAML代码

  1. <ListBox x:Name="myListBox" MouseDoubleClick="MyListBox_MouseDoubleClick"/>
复制代码
后台代码

  1. private void MyListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
  2. {
  3.     ListBox listBox = sender as ListBox;
  4.     string selectedItem = listBox.SelectedItem as string;
  5.     MessageBox.Show($"Double-clicked on: {selectedItem}");
  6. }
复制代码
四、ListBox的高级用法

1. 自定义项模板

通过自定义项模板,可以对 ListBox 中的项目进行更复杂的显示和结构。
XAML代码

  1. <ListBox x:Name="myListBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="300" Height="300">
  2.     <ListBox.ItemTemplate>
  3.         <DataTemplate>
  4.             <StackPanel Orientation="Horizontal">
  5.                 <TextBlock Text="{Binding Name}" Width="100"/>
  6.                 <TextBlock Text="{Binding Description}" Width="200"/>
  7.             </StackPanel>
  8.         </DataTemplate>
  9.     </ListBox.ItemTemplate>
  10. </ListBox>
复制代码
后台代码

  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         this.DataContext = this;
  7.         Items = new List<Item>
  8.         {
  9.             new Item { Name = "Item 1", Description = "Description 1" },
  10.             new Item { Name = "Item 2", Description = "Description 2" },
  11.             new Item { Name = "Item 3", Description = "Description 3" }
  12.         };
  13.     }
  14.     public List<Item> Items { get; set; }
  15. }
  16. public class Item
  17. {
  18.     public string Name { get; set; }
  19.     public string Description { get; set; }
  20. }
复制代码
2. 绑定复杂对象

当绑定复杂对象时,可以使用 DisplayMemberPath 来指定显示的属性,或者使用 ItemTemplate 自定义显示。
XAML代码

  1. <ListBox x:Name="myListBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Height="300"
  2.          ItemsSource="{Binding Items}" DisplayMemberPath="Name"/>
复制代码
后台代码

  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         this.DataContext = this;
  7.         Items = new List<Item>
  8.         {
  9.             new Item { Name = "Item 1", Description = "Description 1" },
  10.             new Item { Name = "Item 2", Description = "Description 2" },
  11.             new Item { Name = "Item 3", Description = "Description 3" }
  12.         };
  13.     }
  14.     public List<Item> Items { get; set; }
  15. }
  16. public class Item
  17. {
  18.     public string Name { get; set; }
  19.     public string Description { get; set; }
  20. }
复制代码
五、总结

在本篇博客中,我们详细介绍了 WPF 中 ListBox 控件的常见属性和事件。通过这些示例代码,你可以了解如何设置 ListBox 的外观和运动,而且可以或许处理用户的根本交互。这些知识对于创建丰富和互动的用户界面至关重要。
内容择要

在本篇博客《C# WPF入门学习主线篇(八)—— ListBox常见属性和事件》中,我们深入探讨了 WPF 中 ListBox 控件的使用。起首,我们介绍了 ListBox 的根本定义和常见属性,包括 ItemsSource、SelectedItem、SelectedIndex、SelectionMode 等。接着,我们展示了如那边理 ListBox 的各种事件,如 SelectionChanged、Loaded 和 MouseDoubleClick。通过这些示例代码,读者可以学会如何自定义 ListBox 的运动,以满足具体的应用需求。最后,我们还介绍了一些 ListBox 的高级用法,例如自定义项模板和绑定复杂对象。
盼望这篇博客内容和总结能帮助你更好地理解和掌握 WPF 中 ListBox 的使用。如果有任何问题或需要进一步的引导,请在批评区留言。祝你学习愉快!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表