Первое, что я хотел бы предложить, это забыть использовать MouseLeftButtonUp и вместо этого связать SelectedItem элемента управления с переменной в вашем коде. Таким образом, если пользователь решит использовать клавиатуру, все в ловушке.
<ListBox x:Name="lbItems" ItemsSource="{Binding Path=MyListItems}" SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}"/>
public ObservableCollection<YourClass> MyListItems
public YourClass SelectedItem
Это автоматически устанавливает SelectedItem, как только пользователь выбирает элемент.
Тогда я хотел бы спросить, должен ли элемент отменить выбор, если они щелкают по нему снова? Это не стандартное поведение, вам нужно отменить выбор элемента?
Если вы хотите записать ранее выбранный элемент, вы можете иметь
private YourClass _previousSelectedItem;
private YourClass _selectedItem;
public YourClass SelectedItem
{
get { return _selectedItem;}
set { if (_selectedItem == value) return;
_previousSelectedItem = _selectedItem;
_selectedItem = value;
}
}
Который вы устанавливаете при изменении SelectedItem.
Это дает вам некоторые идеи?