Мое предложение было бы не использовать ListBox здесь.Используйте ListBox только тогда, когда вам нужно выбрать элемент.Вместо этого рассмотрим ItemsControl.
Следующая проблема, которую вы имеете, касается выбранного элемента.Вы можете сделать это, привязав CommandParameter к текущему элементу следующим образом:
CommandParameter="{Binding}"
Затем вам нужно будет изменить вашу Команду, чтобы принять параметр.С DelegateCommand похоже, что вы, возможно, используете Prism (или использовали свой собственный DelegateCommand), и я не уверен, что вы можете настроить его для принятия параметра.Я знаю, что для MVVM Light (и RelayCommand) это выглядит так:
public RelayCommand<Products> AddToFavCommand { get; private set;}
тогда, где вы настраиваете свои команды:
AddToFavCommand = new RelayCommand<Products>((p)=>AddToFav(p));
или, проще, используя методгруппа:
AddToFavCommand = new RelayCommand<Products>(AddToFav);
и
private void AddToFav(Products p)
{
//do stuff
}