0

次のように、2 つのリスト (Selected と UnSelected) から項目を追加および削除するためのコントロールを実行したいと考えています。

コントロールのスクリーンショット

しかし、これを行う良い方法が見つかりません。2 つのリストをバインドして変更するために GridData (または Devexpress の GridControl のような同様のコントロール) を使用するにはどうすればよいですか?

問題:

  • このコントロールでは ObservableCollection を使用できません
  • SelectedItems をバインドできません

いくつかの作業の提案やサンプルがあれば、それは大きな助けになります

4

1 に答える 1

1

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