1

コードを使用して ListView の選択イベントの動作を模倣しようとしています。コード例は次のとおりです。

<StackPanel>
    <Button x:Name="buttonSelectAbove" Content="Select Above"/>
    <Button x:Name="buttonSelectBelow" Content="Select Below"/>
    <ListView x:Name="listView"/>
</StackPanel>

コードビハインドは次のとおりです。

void buttonSelectBelow_Click(object sender, RoutedEventArgs e)
{
    listView.SelectedIndex += 1;
    ListViewItem lvi = listView.ItemContainerGenerator.ContainerFromItem(listView.SelectedItem) as ListViewItem;
    if (lvi != null)
    {
        lvi.Focus();
    }
}

void buttonSelectAbove_Click(object sender, RoutedEventArgs e)
{
    listView.SelectedIndex -= 1;
    ListViewItem lvi = listView.ItemContainerGenerator.ContainerFromItem(listView.SelectedItem) as ListViewItem;
    if (lvi != null)
    {
        lvi.Focus();
    }
}

これらのコードを試すと、各ボタンをクリックし、キーボードを使用してリストを上下に移動すると期待どおりに動作しますが、SHIFT クリックを使用してアイテムの範囲を選択すると、マウスでの選択とは異なる動作になります。より明確にするための画像:

通常の選択動作:
C をクリック
ここに画像の説明を入力

次に、E を Shift クリックします (c、d、e が選択されます)。 ここに画像の説明を入力

コード動作による選択:
A をクリックし、
ここに画像の説明を入力

下の選択ボタンを2回クリックして、Cが選択されるようにします ここに画像の説明を入力

次に、E を Shift クリックします (a、b、c、d、e が選択されます)。 ここに画像の説明を入力

では、コードを介して通常の選択動作を実現するにはどうすればよいですか?

4

1 に答える 1

0

複数の行を選択できない場合は、LIstView で SelectionMode="Single" を使用します。

于 2012-09-26T05:12:17.590 に答える