Событие изменения выбора происходит каждый раз, когда изменяется выбор (либо из пользовательского ввода, либо нет)
При перезагрузке списка выбор изменяется (наиболее вероятно, -1)
этот кодниже проверяет, что пользователь выбрал что-то (элемент с действительным индексом, т.е. не -1), затем запускает код.
private void ShowProductDetails(object sender, SelectionChangedEventArgs e)
{
if(lstItems.SelectedIndex != -1)
{
Item item = lstItems.SelectedItem as Item;
int index = lstItems.SelectedIndex;
}
}