我已经在 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);
}
}
如果 SelectionMode 是 Extended,则不会调用 UpdateAnchorAndActionItem(selectedItem)。
因此,在后面的代码中,您必须执行以下操作:
list.SelectionMode = SelectionMode.Single;
list.SelectedIndex = 4;
list.SelectionMode = SelectionMode.Extended;
不太了解 MVVM 的情况。
更新1
我创建了自定义 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;
}
}