public bool SelectCurrentBySpace()
{
// Another item was focused by Ctrl+Arrow key
var item = GetFocusedItem();
if (treeView.SelectedItems.Contains(item.DataContext))
{
// With Ctrl key, toggle this item selection (deselect now).
// Without Ctrl key, always select it (is already selected).
if (IsControlKeyDown)
{
if (!Deselect(item, true)) return false;
item.IsSelected = false;
}
}
else
{
var e = new PreviewSelectionChangedEventArgs(true, item.DataContext);
OnPreviewSelectionChanged(e);
if (e.CancelAny)
{
FocusHelper.Focus(item, true);
return false;
}
item.IsSelected = true;
if (!treeView.SelectedItems.Contains(item.DataContext))
{
treeView.SelectedItems.Add(item.DataContext);
}
}
FocusHelper.Focus(item, true);
return true;
}