I have a WPF ListView control, ItemsSource is set to an ICollectionView created this way:
var collectionView =
System.Windows.Data.CollectionViewSource.Ge
This all seems a little bit intrusive...I went with rewriting the logic myself:
public class CustomListView : ListView
{
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
// Override the default, sloppy behavior of key up and down events that are broken in WPF's ListView control.
if (e.Key == Key.Up)
{
e.Handled = true;
if (SelectedItems.Count > 0)
{
int indexToSelect = Items.IndexOf(SelectedItems[0]) - 1;
if (indexToSelect >= 0)
{
SelectedItem = Items[indexToSelect];
ScrollIntoView(SelectedItem);
}
}
}
else if (e.Key == Key.Down)
{
e.Handled = true;
if (SelectedItems.Count > 0)
{
int indexToSelect = Items.IndexOf(SelectedItems[SelectedItems.Count - 1]) + 1;
if (indexToSelect < Items.Count)
{
SelectedItem = Items[indexToSelect];
ScrollIntoView(SelectedItem);
}
}
}
else
{
base.OnPreviewKeyDown(e);
}
}
}