WPF ListBox控件入门介绍

本文介绍了WindowsListBox控件的两种使用方式:通过XAML直接设置子项内容和通过数据源绑定显示数据。展示了如何设置字体、绑定数据源以及利用DisplayMemberPath和SelectedValuePath属性进行定制。
摘要由CSDN通过智能技术生成

    ListBox控件是一个集合控件,之前介绍的treeview也是一种集合控件,两者的表现方式不同,ListBox控件一般用于布置列表选项,可作为单选或多选列表。

    这个控件可以在axml中直接通过子项设置显示内容,也可以通过后台绑定数据源,或者通过后台添加,今天简单记录一下。

①通过子项直接设置
    <Grid>
        <ListBox DisplayMemberPath="" SelectedValuePath="">
            <ListBoxItem>
                <TextBox Text="123"/>
            </ListBoxItem>
            <ListBoxItem>
                <CheckBox Content="单选"/>
            </ListBoxItem>
            <ListBoxItem>
                <Button Content="点击"/>
            </ListBoxItem>
        </ListBox>
    </Grid>

在布局控件里面加一个listbox控件,然后在其子项ListBoxItem内部添加所需内容即可,效果如下:

②通过选择数据源显示数据

这里通过一个例子大概说一下:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="2"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListBox x:Name="_listbox" FontSize="25" ItemsSource="{Binding Items}"/>
        <GridSplitter Width="2" Background="Blue" Grid.Column="1"/>
        <Grid Grid.Column="2">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <TextBlock x:Name="_text" Background="Gray" FontSize="50"/>
            <Button Click="Button_Click" Grid.Row="1" Width="50" Height="30" Content="点击"/>
        </Grid>
    </Grid>
using System.Collections.ObjectModel;
using System.Windows;


namespace listbox
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public ObservableCollection<string> Items { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            // 初始化数据源
            Items = new ObservableCollection<string>();
            Items.Add("name");
            Items.Add("age");
            Items.Add("score");
            Items.Add("math");
            Items.Add("english");
            Items.Add("chinese");
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (_listbox.SelectedValue.ToString() == "name")
                {
                    _text.Text = "张三";
                }
                else if (_listbox.SelectedValue.ToString() == "age")
                {
                    _text.Text = "18";
                }
                else if (_listbox.SelectedValue.ToString() == "score")
                {
                    _text.Text = "81";
                }
                else if (_listbox.SelectedValue.ToString() == "math")
                {
                    _text.Text = "83";
                }
                else if (_listbox.SelectedValue.ToString() == "english")
                {
                    _text.Text = "78";
                }
                else if (_listbox.SelectedValue.ToString() == "chinese")
                {
                    _text.Text = "81";
                }
            }
            catch(System.NullReferenceException ex)
            {
                _text.Text = "未选中";
            } 
        }
    }
}

这个例子的显示效果为:

左边选中listbox的子项后,点击右侧按钮,会在右上方显示相应内容。

这里主要介绍一下listbox的使用。

xaml内:

<ListBox x:Name="_listbox" FontSize="25" ItemsSource="{Binding Items}"/>

UI里面就这一行代码,这里起了个名字是为了后台去搜索,再设置了字体大小,然后是一个数据源的绑定,这里的items即绑定的数据源,一般在后端声明。

看看后端数据源:

 public ObservableCollection<string> Items { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            // 初始化数据源
            Items = new ObservableCollection<string>();
            Items.Add("name");
            Items.Add("age");
            Items.Add("score");
            Items.Add("math");
            Items.Add("english");
            Items.Add("chinese");
        }

    这里的ObservableCollection<string>其实是数据绑定中常用的一种声明方法,数据绑定有的朋友可能看学过,简单说,就是使用上面那样的声明,定义一个String集合,那么这个集合的数据就可以跟着前端数据一起变,在这里就简单理解为建立了一个数据源就行了,然后在数据源中添加对象,可以看出数据源中Add的内容就显示在了结果里面。

    按钮事件里面的逻辑也很简单,就是将listbox选中的值判断一下,让右侧显示对应的内容。

    还有一点内容,假设listbox添加的数据是一些类的实例,这些类可能有很多的属性,但是listbox只能显示一个,所以就有一个DisplayMemberPath属性,通过设置这个属性,就可以设置具体显示那个属性,还有一个SelectedValuePath属性,这个属性可以设置在选中listbox子项时,获取的value是数据类的哪个属性,可以自己试试。而且listbox还可以选中多个,这里只是简单入门,所以没写,可以自己试试。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WPF.NET 6.0中的ListBox控件是一种用于显示列表数据的控件。它可以在界面上显示多个项,并允许用户选择其中的一个或多个项。引用\[1\]中列举了一些常见的WPF控件,其中包括ListBox。 在VC6中创建一个MFC AppWizard (exe)项目,并选择dialog based模板后,可以在dialog中插入一个ListBox控件。可以通过修改ListBox的属性来改变其样式,比如将Styles中的Owner draw改为Fixed或Variable。\[2\] 在XAML中,可以使用附加属性来控制ListBox的行为。例如,可以使用Trigger来判断附加属性PasswordLength是否等于0,如果是,则显示水印。具体的代码可以参考引用\[3\]中的示例。 总结起来,WPF.NET 6.0中的ListBox控件是一种用于显示列表数据的控件,可以通过修改属性来改变其样式,并且可以使用附加属性来控制其行为。 #### 引用[.reference_title] - *1* *3* [WPF 基础控件之 PasswordBox 样式](https://blog.csdn.net/zls365365/article/details/124642528)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [改变ListBox中文本的颜色以及其他](https://blog.csdn.net/wu5318/article/details/11381417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值