MVVM, две синхронизированные данные сетки - PullRequest
0 голосов
/ 23 февраля 2011

Я хочу сделать элемент управления для добавления и удаления элементов из двух списков (выбранных и невыбранных), например:

Screenshot of control

Но яне могу найти хороший способ сделать это;Как я могу использовать GridData (или аналогичный элемент управления, как GridControl of Devexpress) для связывания двух List и изменить его?

Проблемы:

  • Я не могу использовать ObservableCollection с этим элементом управления
  • Я не могу связать SelectedItems

Если у вас есть какие-либо предложения или образцы для какой-либо работы, это очень поможет

1 Ответ

1 голос
/ 23 февраля 2011

Можете ли вы использовать две наблюдаемые коллекции? Один для избранных и один для невыбранных. Кажется, это самый простой способ реализовать такую ​​функциональность.

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);
        }
    }
}
...