过滤wpf中的数据集

时间:2009-08-16 15:19:33

标签: wpf

我正在开发一个WPF字典应用程序。我的XAML代码中有一个列表框和一个文本框,根据文本框中的用户输入,必须过滤数据集,列表框必须只显示相关的行。 例如:如果用户在文本框中输入“t”,则列表框必须只显示“电视”等字样 我的问题是,当表单加载时,列表框中会填充50个单词,但是当我在文本框中键入任何内容时,列表框将变为空白。 我曾尝试使用过滤数据集本身,但总是有错误可以有人帮助我吗?我怎么能这样做?

我的代码在这里

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using System.Data.OleDb;
using System.ComponentModel;

namespace DictionaryM
{
    /// <summary>
    /// Interaction logic for Dictionary.xaml
    /// </summary>
    public  partial class Dictionary : Window
    {
        public ICollectionView view;

        public Dictionary()
        {
            InitializeComponent();

            BindData();

             }
        public void BindData()

        {


            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\CellBiology.mdb;Persist Security Info=True");
            con.Open();
            string sql = "Select Word from Dictionary";
            OleDbCommand cmd = new OleDbCommand(sql, con);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            try
            {


                da.Fill(ds, "Word");
                listBox1.DataContext = ds;



            }
            catch (Exception ex)
            {

                label1.Content = ex.Message;

            }


        private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
        {

              //  i dont know what will i code here?



        }


     }

thanks everyone who response this question

2 个答案:

答案 0 :(得分:0)

private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
    listBox1.Items.Filter =
            (value) =>
            {
                DataRow row = value as DataRow;
                if (row != null)
                {
                    if (row["Word"].ToLower().StartsWith(textBox1.Text.ToLower())
                        return true;
                }
                return false;
            };
}

(实际上我不确定这些项目的实际类型,可能是DataRowView,而不是DataRow ......)

答案 1 :(得分:0)

listBox1.Items.CanFilter
当Items是DataSet时,

返回false,因此它不起作用。