如何在WPF中设置Listview以响应Enter以及MouseClick?

时间:2014-10-31 13:44:43

标签: c# wpf xaml listview

我有一个WPF列表视图,我在XAML中使用“SelectionChanged”进行选择。我的支持代码在C#中。该应用程序工作正常。我还要在突出显示特定行时按Enter键进行选择,以获得与鼠标单击该条目相同的结果。

我尝试在我的XAML中设置一个KeyUp事件,并检查支持代码中e.Key何时是“返回”,这样做也可以正常工作。问题是,当我按Enter键时,我无法看到列表视图中的哪一行:SelectedIndex为-1,且SelectedItem为空,因此显然没有选择;所有这些显示的是当我按下Enter键时我在列表视图中。

有人可以告诉我如何做到这一点吗?我对WPF比较陌生,所以请在回复中具体说明。

3 个答案:

答案 0 :(得分:0)

SelectedIndexSelectionChanged事件直接相关,仅在选中项目时才会更改。

您应该使用类似ListViewItemMouseHoverEvent的内容来获取输入KeyUp事件的索引。

YourListViewItemType item;
private void ListView1_ItemMouseHover(Object sender, ListViewItemMouseHoverEventArgs e) {
    item = e.Item;
}
private void Page_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if(item == null) return;
    if(e.KeyCode == Keys.Return)
    {
        // Do something with highlighted item
    }
}

这样的事情应该有效

答案 1 :(得分:0)

嗯,事实证明,使用listview上的向上和向下箭头(当它处于焦点时),设置SelectedIndex。不知道为什么我之前没有接受过,但是一旦我发现了这一点,从我的可观察集合中检索记录并将其解析出来是一件简单的事情。我最终在我的XAML中编写了一个Keyboard.KeyUp事件并检查我的事件处理程序中按下了什么键,例如,C或Enter表示更改,D或删除表示删除,等等。

答案 2 :(得分:0)

这是ListView中的按钮
它应该与文本块一起使用 您只需要获取DataContext

Button btn = (Button)sender;
GabeLib.SearchItem srchItem = (GabeLib.SearchItem)btn.DataContext;