我想做一个控件来从两个列表(选定和未选定)中添加和删除项目,如下所示:
但是我找不到这样做的好方法;如何使用 GridData(或 Devexpress 的 GridControl 之类的类似控件)绑定两个 List 并对其进行修改?
问题:
- 我不能将 ObservableCollection 与此控件一起使用
- 我无法绑定 SelectedItems
如果您对某些工作有任何建议或样品,这将是一个很大的帮助
我想做一个控件来从两个列表(选定和未选定)中添加和删除项目,如下所示:
但是我找不到这样做的好方法;如何使用 GridData(或 Devexpress 的 GridControl 之类的类似控件)绑定两个 List 并对其进行修改?
问题:
如果您对某些工作有任何建议或样品,这将是一个很大的帮助
你可以使用两个可观察的集合吗?一个用于选中,一个用于未选中。这似乎是实现此类功能的最简单方法。
public class MainViewModel
{
private readonly ObservableCollection<Item> _selectedItems = new ObservableCollection();
private readonly ObservableCollection<Item> _unselectedItems = new ObservableCollection();
public IEnumerable<Item> SelectedItems { get { return _selectedItems; } }
public IEnumerable<Item> UnselectedItems { get { return _unselectedItems; } }
private void UnselectItems()
{
MoveFromOneCollectionToAnother(_unselectedItems, _selectedItems, ...);
}
private void SelectItems()
{
MoveFromOneCollectionToAnother(_selectedItems, _unselectedItems, ...);
}
private void MoveFromOneCollectionToAnother(ICollection<Item> source, ICollection<Item> destination, IEnumerable<Item> itemsToMove)
{
foreach (var item in itemsToMove)
{
source.Remove(item);
destination.Add(item);
}
}
}