WPF 项目开发入门(五)ListView列表组件 与 Expander组件

本文详细介绍WPF中ListView组件的使用方法,包括数据绑定、ItemTemplate与DataTemplate的应用、事件绑定及GridView视图展示等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WPF 项目开发入门(一) 安装运行
WPF 项目开发入门(二) WPF 页面布局
WPF 项目开发入门(三)WPF 窗体与页面
WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件
WPF 项目开发入门(五)ListView列表组件 与 Expander组件
WPF 项目开发入门(六)DataGrid组件
WPF 项目开发入门(七) From表单组件
WPF 项目开发入门(八)数据库驱动配置与数据库操作
WPF 项目开发入门(九)数据库连接 NHibernate使用
WPF 项目开发入门(十)DevExpress 插件+NHibernate登录
WPF 项目开发入门(十一)DevExpress 插件 Grid表格应用
ListView 显示数据为列表形式,类似于html中的lo,lu,li等元素。

ListView数据绑定

  • ListView 组件通过 ItemsSource属性绑定 数据集合。
 public partial class Frame1 : Window {
     private List<Customer> _customers = new List<Customer>();
     public Frame1(){
         InitializeComponent();
         //装入列表数据结构内容
         _customers.Add(new Customer { Id = 1, Name = "name1", Path = "../Page1.xaml" });
         _customers.Add(new Customer { Id = 2, Name = "name2", Path = "../Page2.xaml" });
         _customers.Add(new Customer { Id = 3, Name = "name3", Path = "../布局/Page1.xaml" });
         ListViewName.ItemsSource = _customers;//ListView组件名称全局唯一引用
        }
     //定义列表数据结构
     public class Customer {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Path { get; set; }
            public override string ToString(){
            	return $"{Id} - {Name} - {Phone}";
            }
     }
 }

xaml代码

<ListView x:Name="CustomerListView"
           Margin="0,5,0,0">
</ListView>

在这里插入图片描述
执行程序后,页面显示 3 个数据项,但显示“Customer”,数据没有启到作用。这是因为显示了Customer 类默认的ToString() 字符串。需要定义Customer 类的ToString() 内容。

数据类型 ToString()

数据类中覆盖 ToString() 方法。在ToString()方法中定义组件显示的文字内容字符串。

如下所示:在类中ToString() 将生成一个由连字符分隔的 ID、名称的字符串。

public class Customer {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Path { get; set; }
    public override string ToString(){
        return $"{Id} -{Name}";//ListView组件显示内容
    }
}

在这里插入图片描述
现在可以查看到菜单中显示的数据信息内容了。

ItemTemplate、DataTemplate 绑定组件数据

在Xaml代码的ListView 组件中使用 ListView.ItemTemplate 属性创建一个 DataTemplate 模板块。使用 StackPanel 布局来摆放TextBlock控件。设置TextBlock控件进行数据绑定 Text = ”{Binding Id}” 来指定要显示数据类的哪个值。如果您想更改字体大小、文本颜色等,您只需更改 TextBlock 的这些属性,即可创建您喜欢的任何布局。

<ListView x:Name="CustomerListView1"
                      Margin="0,5,0,0">
    <ListView.ItemTemplate>------------------------数据模板设置
        <DataTemplate>
            <StackPanel Orientation="Horizontal">--水平布局
                <TextBlock Text="{Binding Id}"/>---显示Customer类中的id属性
                <TextBlock Text="{Binding Name}"/>---显示Customer类中的Name属性
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在这里插入图片描述
ListView的Height属性滚动条

<ListView x:Name="CustomerListView"
          Margin="0,5,0,0"
          Height="250">------超过出现滚动条

ListView 事件绑定

ListView 事件绑定SelectionChanged事件。

<ListView x:Name="CustomerListView"
          Margin="0,5,0,0" SelectionChanged="OnListViewChangedZht">
 </ListView>

事件处理

private void OnListViewChangedZht(object sender, SelectionChangedEventArgs e){
    ListView t = (ListView)sender;
    Customer c=(Customer)t.SelectedItem;
    Uri uri = new Uri(c.Path, UriKind.Relative);
    framemain.Source = uri;
}

ListView 表格GridView

<ListView ItemsSource="{Binding}" x:Name="listView"  Grid.Row="0">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="分数" DisplayMemberBinding="{Binding Path=Subj}" Width="50"/>
            <GridViewColumn Header="名称" DisplayMemberBinding="{Binding Path=Name}" Width="50"/>
            <GridViewColumn Header="班级" DisplayMemberBinding="{Binding Path=ClassName}" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>

----------------------------      数据绑定      ----------------------------------
 listView.DataContext = list;

在这里插入图片描述

Expander组件

Expander 控件是可以打开和关闭区域的控件。如果不指定 Expander 本身的 Height,则当您关闭 Expander 时,区域会缩小,其下方的控件也会随之跟进。如果指定高度,则区域在关闭时的高度保持不变。

  • IsExpanded属性自动展开
  • BorderBrush 背景色内容
<Expander SnapsToDevicePixels="True" Header="管理系统" IsExpanded="True">
    <StackPanel Orientation="Horizontal">
        <ListView x:Name="CustomerListView"  Width="196"
                  Margin="0,5,0,0" SelectionChanged="OnListViewChangedZht">
        </ListView>
    </StackPanel>
</Expander>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zht_bs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值