首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年09月 WPF控件专题 XAML介绍
2
【愚公系列】2023年09月 WPF控件专题 WPF应用程序组成
3
【愚公系列】2023年09月 WPF控件专题 Window窗体属性和事件
4
【愚公系列】2023年09月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
5
【愚公系列】2023年09月 WPF控件专题 Button控件详解
6
【愚公系列】2023年09月 WPF控件专题 RadioButton控件详解
7
【愚公系列】2023年09月 WPF控件专题 CheckBox控件详解
8
【愚公系列】2023年09月 WPF控件专题 Image控件详解
9
【愚公系列】2023年09月 WPF控件专题 Border控件详解
10
【愚公系列】2023年09月 WPF控件专题 ComboBox控件详解
11
【愚公系列】2023年09月 WPF控件专题 ListBox控件详解
12
【愚公系列】2023年09月 WPF控件专题 DatePicker控件详解
13
【愚公系列】2023年09月 WPF控件专题 Calendar控件详解
14
【愚公系列】2023年09月 WPF控件专题 Slider控件详解
15
【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
16
【愚公系列】2023年10月 WPF控件专题 StackPanel控件详解
17
【愚公系列】2023年10月 WPF控件专题 WrapPanel控件详解
18
【愚公系列】2023年10月 WPF控件专题 DockPanel控件详解
19
【愚公系列】2023年10月 WPF控件专题 Canvas控件详解
20
【愚公系列】2023年10月 WPF控件专题 Grid控件详解
21
【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解
22
【愚公系列】2023年10月 WPF控件专题 Expander控件详解
23
【愚公系列】2023年10月 WPF控件专题 TabControl控件详解
24
【愚公系列】2023年10月 WPF控件专题 Frame控件详解
25
【愚公系列】2023年10月 WPF控件专题 ListView控件详解
26
【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解
27
【愚公系列】2023年10月 WPF控件专题 Menu控件详解
28
【愚公系列】2023年10月 WPF控件专题 ContextMenu控件详解
29
【愚公系列】2023年10月 WPF控件专题 TreeView控件详解
30
【愚公系列】2023年10月 WPF控件专题 ToolBar控件详解
31
【愚公系列】2023年10月 WPF控件专题 ToolBarTray控件详解
32
【愚公系列】2023年10月 WPF控件专题 StatusBar控件详解
33
【愚公系列】2023年11月 WPF控件专题 MediaElement控件详解
34
【愚公系列】2023年11月 WPF控件专题 RichTextBox控件详解
35
【愚公系列】2023年11月 WPF控件专题 GridView控件详解
36
【愚公系列】2023年11月 WPF控件专题 Rectangle控件详解
37
【愚公系列】2023年11月 WPF控件专题 Popup控件详解
38
【愚公系列】2023年11月 WPF控件专题 OpenFileDialog控件详解
39
【愚公系列】2023年11月 WPF控件专题 SaveFileDialog控件详解
40
【愚公系列】2023年11月 WPF控件专题 RepeatButton控件详解
41
【愚公系列】2023年11月 WPF控件专题 Ellipse控件详解
42
【愚公系列】2023年11月 WPF控件专题 Polygon控件详解
43
【愚公系列】2023年11月 WPF控件专题 Path控件详解
44
【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解
45
【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解
46
【愚公系列】2023年11月 WPF控件专题 Validation控件详解
47
【愚公系列】2023年11月 WPF控件专题 Page控件详解
48
【愚公系列】2023年11月 WPF控件专题 PrintDialog控件详解
49
【愚公系列】2023年11月 WPF控件专题 Track控件详解
50
【愚公系列】2023年11月 WPF控件专题 Polyline控件详解

【愚公系列】2023年10月 WPF控件专题 ListView控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。 🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。

自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

🚀一、ListView控件详解

WPF中的ListView控件是一个非常强大的控件,它可以用来显示列表数据,例如文件列表、电子邮件列表、联系人列表等等。ListView控件可以支持多种布局风格和视图模式,例如网格视图、平铺视图、大图标视图、小图标视图等等。

要使用ListView控件,您需要做以下几个步骤:

  1. 添加ListView控件到您的XAML文件中。
  2. 给ListView控件设置一个数据源,例如数据集合或绑定到一个ViewModel。
  3. 给ListView控件设置一个ItemTemplate,该模板定义了每个列表项应该显示什么内容。
  4. 根据需要设置ListView控件的布局风格和视图模式。

以下是一个使用ListView控件显示一个简单字符串列表的示例:

代码语言:html
复制
<ListView ItemsSource="{Binding MyList}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在这个示例中,我们将MyList属性作为数据源绑定到ListView控件,然后使用一个简单的DataTemplate来显示每个列表项。该DataTemplate只包含一个TextBlock控件,它被绑定到每个列表项的值。

🔎1.属性介绍

WPF中ListView控件常用属性如下:

  1. ItemsSource:绑定数据源,可为ObservableCollection或其他集合类型。
  2. SelectedItem:表示当前选中的项,可双向绑定。
  3. ItemTemplate:指定用于显示每个项的模板。
  4. View:用于指定ListView的显示方式,包括GridView、StackPanel等。
  5. IsSynchronizedWithCurrentItem:表示是否将SelectedItem与集合CurrentItem同步,仅适用于ICollectionView类型数据源。
  6. SelectionMode:表示选择模式,包括Single、Multiple、Extended等。
  7. AlternationCount:用于指定奇偶行的背景颜色交替显示的数量。
  8. Header:设置ListView的头部标题。
  9. ItemContainerStyle:用于指定每个项的样式。
  10. VerticalContentAlignment和HorizontalContentAlignment:用于指定内容在项容器内的对齐方式。

🔎2.常用场景

WPF中ListView控件常用于以下场景:

  1. 数据展示:可以使用ListView来展示大量的数据,以帮助用户快速查找所需的数据。ListView可以适用于各种类型的数据,例如用户列表、电子邮件列表、音乐播放列表等。
  2. 数据编辑:ListView控件提供了内置的编辑和删除功能,可以方便地进行数据编辑。用户可以通过ListView控件进行快速编辑和更新数据。
  3. 多列布局:ListView控件提供了多列布局的功能,可以使用户更加清晰地看到数据。可以使用GridView来实现多列布局。
  4. 多选:ListView控件可以帮助用户进行多选操作。在多选模式下,用户可以同时选择多个数据项。
  5. 排序:ListView控件提供了一些内置的排序功能,可以按照数据项的某个属性进行排序。用户可以在ListView控件中按照自己的需求进行数据排序。

ListView控件是WPF中非常强大和灵活的控件,可以帮助我们展示和操作各种类型的数据。

🔎3.具体案例

代码语言:html
复制
<Window x:Class="WpfAppTest.ListViewWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppTest"
        mc:Ignorable="d"
        Title="ListViewWindow" Height="450" Width="800" Loaded="Window_Loaded">
        <Grid>
                <ListView Name="lvList" HorizontalAlignment="Left" Height="228" Margin="88,133,0,0" VerticalAlignment="Top" ItemsSource="{Binding}" >
                        <ListView.View>
                                <GridView>
                                        <GridViewColumn>
                                                <GridViewColumn.Header>
                                                        <CheckBox Name="chkAll"  Content="全选" />
                                                </GridViewColumn.Header>
                                                <GridViewColumn.CellTemplate>
                                                        <DataTemplate>
                                                                <CheckBox Name="chk"  Tag="{Binding UserId}" IsChecked="{Binding ElementName=chkAll,Path=IsChecked,Mode=OneWay}"/>
                                                        </DataTemplate>
                                                </GridViewColumn.CellTemplate>
                                        </GridViewColumn>
                                        <GridViewColumn Header="编号" DisplayMemberBinding="{Binding UserId}" Width="50">
                                                <GridViewColumn.HeaderTemplate>
                                                        <DataTemplate>
                                                                <Label Content="{Binding}" Foreground="Red" BorderThickness="1" BorderBrush="YellowGreen" />
                                                        </DataTemplate>
                                                </GridViewColumn.HeaderTemplate>
                                        </GridViewColumn>
                                        <GridViewColumn Header="账号"  Width="80">
                                                <GridViewColumn.CellTemplate>
                                                        <DataTemplate>
                                                                <TextBlock Text="{Binding UserName}" Foreground="YellowGreen"  HorizontalAlignment="Left"   Width="60" />
                                                        </DataTemplate>
                                                </GridViewColumn.CellTemplate>
                                        </GridViewColumn>
                                        <GridViewColumn Header="状态" DisplayMemberBinding="{Binding UserState}" Width="50"/>
                                        <GridViewColumn Header="部门编号" DisplayMemberBinding="{Binding DeptId}" Width="60"/>
                                        <GridViewColumn Header="年龄" DisplayMemberBinding="{Binding UserAge}" Width="50"/>
                                </GridView>
                        </ListView.View>
                </ListView>

        </Grid>
</Window>
代码语言:javascript
复制
/// <summary>
/// ListViewWindow.xaml 的交互逻辑
/// </summary>
public partial class ListViewWindow : Window
{
        public ListViewWindow()
        {
                InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
                //代码设置ItemsSource
                // lvList.ItemsSource = GetUserList();
                lvList.DataContext = GetUserList();
        }

        /// <summary>
        /// 获取用户信息列表
        /// </summary>
        /// <returns></returns>
        private List<UserInfo> GetUserList()
        {
                List<UserInfo> list = new List<UserInfo>();
                string sql = "select UserId,UserName,UserState,UserAge,DeptId from UserInfos where DeptId>0";
                SqlDataReader dr = SqlHelper.ExecuteReader(sql, 1);
                while(dr.Read())
                {
                        UserInfo user = new UserInfo();
                        user.UserId = (int)dr["UserId"];
                        user.UserName = dr["UserName"].ToString();
                        user.UserState = (int)dr["UserState"];
                        user.UserAge = (int)dr["UserAge"];
                        user.DeptId = (int)dr["DeptId"];
                        list.Add(user);
                }
                dr.Close();
                return list;
        }
}

public class UserInfo
{
        public int UserId { get; set; }
        public string UserName { get; set; }
        public int UserState { get; set; }
        public int UserAge { get; set; }
        public int DeptId { get; set; }
}

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

下一篇
举报
领券