この問題について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の場合の状況がよくわかりません。
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;
}
}