Да, и чтобы мой гнев был полезным, вот в какой код вылилась простая задача "удалить из листбокса выделенные строки"!
var gen = lbxExtraData.ItemContainerGenerator;
var victimIdxs = new List<int>();
for (int i = extData.Count - 1; i >= 0; i--) { // extData - это враппер (List<string>)lbxExtraData.ItemsSource
var iv = (ListBoxItem)gen.ContainerFromIndex(i);
if (iv.IsSelected) victimIdxs.Add(i);
}
foreach (var idx in victimIdxs)
extData.RemoveAt(idx);
lbxExtraData.RefreshView();
Вместо того, чтобы просто взять выделенные элементы (в отдельный массив) и удалить их из списка. Да...