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());