0
点赞
收藏
分享

微信扫一扫

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

(文章目录)

前言

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控件显示一个简单字符串列表的示例:

<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.具体案例

<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>
/// <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; }
}
举报

相关推荐

0 条评论