как H.B. отметил, что есть много способов, которыми это может быть достигнуто. Вероятно, наиболее широко известная архитектура для WPF - это MVVM, поэтому я постараюсь наметить решение в отношении моего понимания этой архитектуры.
ViewModel предоставляет несколько различных свойств: LHSList, LHSSelectedItem, RHSList, RHSSelectedItem (здесь коллекции являются ObservableCollections), а также несколько команд - MoveLHSSelectedToRHS, MoveLHSToRHS, MoveRHSSelectedToRHS, MoveRHST.
Списки являются простыми привязками к ListViews в представлении, и SelectedItem этих ListViews также связаны соответствующим образом. Команды просто работают со списками и выбранными элементами. Например, MoveLHSSelectedToRHS будет командой с действием, похожим на:
public void OnMoveLHSSelectedToRHS ()
{
если (LHSSelectedItem == NULL)
вернуть;
RHSList.Add (LHSSelectedItem);
LHSList.Remove (LHSSelectedItem);
LHSSelectedItem = NULL;
}
К сожалению, похоже, что вы используете код в данный момент. Если вы не знакомы с MVVM, я бы посоветовал заглянуть в статьи Джоша Смита о WPF - это отличное место для начала!