我有一个WPF列表视图,我在XAML中使用“SelectionChanged”进行选择。我的支持代码在C#中。该应用程序工作正常。我还要在突出显示特定行时按Enter键进行选择,以获得与鼠标单击该条目相同的结果。
我尝试在我的XAML中设置一个KeyUp事件,并检查支持代码中e.Key何时是“返回”,这样做也可以正常工作。问题是,当我按Enter键时,我无法看到列表视图中的哪一行:SelectedIndex为-1,且SelectedItem为空,因此显然没有选择;所有这些显示的是当我按下Enter键时我在列表视图中。
有人可以告诉我如何做到这一点吗?我对WPF比较陌生,所以请在回复中具体说明。
答案 0 :(得分:0)
SelectedIndex
与SelectionChanged
事件直接相关,仅在选中项目时才会更改。
您应该使用类似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;