[英]listbox double-click to add and remove
我正在使用WPF和C#。 我有两个列表框有点麻烦。 当我双击ListBox1的项目时,它会将项目添加到ListBox2,然后在ListBox1中删除此项目。 添加正在工作但删除无效。 我收到错误消息(看图片)。 知道为什么吗? 可能有什么不对?
class Shopping
{
private ObservableCollection<string> _fruits;
public IEnumerable<string> GetFruits()
{
_fruits = new ObservableCollection<string>
{
"Apples",
"Bananas",
"Oranges",
"Grapes",
"Coconut"
};
return _fruits;
}
public GroceriesList()
{
InitializeComponent();
ListBox1.ItemsSource = _shopping.GetFruits();
}
private void ListBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (ListBox1.SelectedItem != null)
{
ListBox2.Items.Add(ListBox1.SelectedItem);
ListBox1.Items.Remove(ListBox1.SelectedItem);
}
}
他们告诉你在变量_fruits PARTIALLY中添加/删除,因为有一个底层的CollectionViewSource。 我会将第一个lb绑定到列表_allFruits,将第二个lb绑定到列表_selectedFruits。 对这些列表执行适当的添加/删除,而不是直接对lb源执行。
它会像这样工作(因为我从你的问题剪切和粘贴可能的编译错误)...
private ObservableCollection<string> _fruits;
private ObservableCollection<string> _fruitsSelected;
public IEnumerable<string> GetFruits()
{
_fruits = new ObservableCollection<string>
{
"Apples",
"Bananas",
"Oranges",
"Grapes",
"Coconut"
};
return _fruits;
}
public GroceriesList()
{
InitializeComponent();
_fruitsSelected = new ObservableCollection<string>();
ListBox1.ItemsSource = _shopping.GetFruits();
ListBox2.ItemsSource = _fruitsSelected;
}
private void ListBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (ListBox1.SelectedItem != null)
{
_fruitsSelected.Add(ListBox1.SelectedItem);
_fruits.Remove(ListBox1.SelectedItem);
}
}
这将阻止您的错误发生,并允许绑定以'wpf'方式运行。 另一个区别是你使用两个列表而不是一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.