MVVM,两个同步的Grid Data

时间:2011-02-23 18:23:51

标签: wpf mvvm binding gridcontrol

我想做一个控件来添加和删除两个列表中的项目(Selected和UnSelected),如下所示:

Screenshot of control

但我找不到一个好方法来做到这一点;我如何使用GridData(或像Devexpress的GridControl这样的类似控件)绑定两个List并修改它?

问题:

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

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

1 个答案:

答案 0 :(得分: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);
        }
    }
}