WPF & Listview. Shift-выбор нескольких элементов. Неверный элемент запуска
1 ответов
Я спросил в MSDN об этой проблеме. Удивительно, но причиной этой проблемы является SelectionMode
проблема может быть в коде ListBox (ListView происходит от ListBox):
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{ ...
if ((this.SelectionMode == SelectionMode.Single) && (base.SelectedItem != null))
{
...
if (selectedItem != null)
{
this.UpdateAnchorAndActionItem(selectedItem);
}
}
UpdateAnchorAndActionItem (selectedItem) не вызывается, если SelectionMode расширен.
Итак, в коде позади вас нужно сделать следующее:
list.SelectionMode = SelectionMode.Single;
list.SelectedIndex = 4;
list.SelectionMode = SelectionMode.Extended;
не совсем понимаю, как быть в случае MVVM.
Upd1
Я создал пользовательский ListView. Это будет сделано внутри упомянутой выше логики. В этом случае он должен работать так, как вы ожидаете, даже в MVVM. Надеюсь, это вам поможет.
public class MyListView:ListView
{
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
//if it is multiselection than execute standard logic
if(SelectedItems.Count!=1)
{
base.OnSelectionChanged(e);
return;
}
var mode = SelectionMode;
SelectionMode = SelectionMode.Single;
base.OnSelectionChanged(e);
SelectionMode=mode;
}
}