2 つの監視可能なコレクションを使用できますか? 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);
}
}
}