如何以编程方式选择listviewitem,就像使用鼠标/键盘选择一样

时间:2012-09-26 02:32:25

标签: wpf listview

我正在尝试使用代码模仿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
enter image description here

然后转移点击E(将导致c,d,e被选中)enter image description here

通过代码行为进行选择
点击A,
enter image description here

单击按钮选择下面两次,以便选择C enter image description here

然后转移点击E(它将导致a,b,c,d,e被选中)enter image description here

那么如何通过代码实现正常的选择行为?

1 个答案:

答案 0 :(得分:0)

你在LIstView上使用SelectionMode =“Single”,如果你不喜欢它可以选择多行。