void AdjustItemTypes (int prev_select, int new_select)
{
if (items_list == null)
return; // nothing to select
int count = items_list.Count;
if (count == 0)
return; // nothing to select
DataGridItem item;
// Restore item type for the previously selected one.
if (prev_select >= 0 && prev_select < count) {
item = (DataGridItem) items_list [prev_select];
if (item.ItemType == ListItemType.EditItem) {
// nothing to do. This has priority.
} else if ((item.ItemIndex % 2) != 0) {
item.SetItemType (ListItemType.AlternatingItem);
} else {
item.SetItemType (ListItemType.Item);
}
}
if (new_select == -1 || new_select >= count)
return; // nothing to select
item = (DataGridItem) items_list [new_select];
if (item.ItemType != ListItemType.EditItem) // EditItem takes precedence
item.SetItemType (ListItemType.SelectedItem);
}