0

我想做一个控件来从两个列表(选定和未选定)中添加和删除项目,如下所示:

控制截图

但是我找不到这样做的好方法;如何使用 GridData(或 Devexpress 的 GridControl 之类的类似控件)绑定两个 List 并对其进行修改?

问题:

  • 我不能将 ObservableCollection 与此控件一起使用
  • 我无法绑定 SelectedItems

如果您对某些工作有任何建议或样品,这将是一个很大的帮助

4

1 回答 1

1

你可以使用两个可观察的集合吗?一个用于选中,一个用于未选中。这似乎是实现此类功能的最简单方法。

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);
        }
    }
}
于 2011-02-23T18:55:32.667 回答