public bool Select(MultiSelectTreeViewItem item)
{
if (IsControlKeyDown)
{
if (treeView.SelectedItems.Contains(item.DataContext))
{
return Deselect(item, true);
}
else
{
var e = new PreviewSelectionChangedEventArgs(true, item.DataContext);
OnPreviewSelectionChanged(e);
if (e.CancelAny)
{
FocusHelper.Focus(item, true);
return false;
}
return SelectCore(item);
}
}
else
{
if (treeView.SelectedItems.Count == 1 &&
treeView.SelectedItems[0] == item.DataContext)
{
// Requested to select the single already-selected item. Don't change the selection.
FocusHelper.Focus(item, true);
lastShiftRoot = item.DataContext;
return true;
}
else
{
return SelectCore(item);
}
}
}