日期:2014-05-16  浏览次数:20777 次

WPF中ListBox中的问题,希望大家帮忙解决!
看了WPF的视频。得知WPF中ListBox可以进行数据绑定,从而改变其Items。

但是自己用代码怎么实现向ListBox中添加、插入、删除数据?

比如VC/MFC中向ListBox中增加数据为:m_listbox.AddString(_T("数据项1"));删除数据为:m_listbox.DeleteString(_T("数据项1"));。    那么在WPF中怎么操作?
------解决方案--------------------
可能你被什么“VC/MFC”这种只强调低级的编程而很少框架设计的东西给带坏了。

如果你的视频上是给你演示“进行数据绑定,从而改变其Items”,那么你只要往所绑定的数据集合里插入或者删除数据就可以了,根本不用操作ListBox控件。

增删改数据根本不用操作LixtBox,这才是使用ListBox进行UI开发的做法。
------解决方案--------------------
用法在c#里是一样的,增加元素: 
      m_listbox.Items.Add("a");
            m_listbox.Items.Add("b");
            m_listbox.Items.Add("c");
            m_listbox.Items.Add("d");
            m_listbox.Items.Add("e");


 private void button2_Click(object sender, RoutedEventArgs e)
        {
            for (int i = this.listBox1.SelectedItems.Count - 1; i >= 0; i--)
            {
                this.m_listbox.Items.Add(this.listBox1.SelectedItems[i].ToString());
                this.listBox1.Items.Remove(this.listBox1.SelectedItem);
            }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.m_listbox.Items.Insert(0, "aa");
        }
    }
------解决方案--------------------

建议wpf中不要像winform一样使用add的方法,这样动态操作对于获取单独元素的属性不是很方便。
wpf中如果要动态给ListBox动态添加items,应该动态创建ListBoxItem添加。
以下代码如果改为用add方法添加,则不能将对应的items转换为ListBoxItem类型从而无法获取ListBoxItem类型的属性。

 ListBoxItem[] items = new ListBoxItem[]{
            new ListBoxItem(){Content="测试0"},
            new ListBoxItem(){Content="测试1"}
            };
            foreach (var item in items)
                listbox1.Items.Add(item);
            listbox1.Items.Add("测试2");
            ListBoxItem i = listbox1.Items[0] as ListBoxItem;
            MessageBox.Show(i.Content.ToString());