【发布时间】:2020-04-20 08:49:23
【问题描述】:
ListView 只能在单击 listview 项目时获得焦点。当单击空白区域时,也是列表视图的一部分,无法获得焦点。
例子:
<Grid>
<ListView x:Name="lv"
GotFocus="Lv_OnGotFocus"
LostFocus="Lv_OnLostFocus"
MouseEnter="Lv_OnMouseEnter">
<ListViewItem>Foo</ListViewItem>
<ListViewItem>Bar</ListViewItem>
</ListView>
</Grid>
在上面的代码中,我将事件处理程序绑定到列表视图而不是列表视图项。
- 当光标在空白区域移动时,Lv_OnMouseEnter 处理程序被触发,这表明空白区域也是列表视图的一部分。
- 在空白区域点击时,Lv_OnGotFocus没有被触发。没有获得焦点。
- 当点击任何列表视图项目时,Lv_OnGotFocus 被触发。焦点得到了。
- 当 Lv_OnGotFocus 处理程序被移到 Grid 之外时,情况也是如此。
如何在点击列表视图的任何部分时获得焦点?
为什么我需要关注空白区域?
我正在列表视图中实现文件复制和粘贴功能,其中列表视图项绑定到磁盘上的文件。粘贴操作由附加到列表视图的 PreviewKeyDown 处理程序触发,其中检查了 Ctrl + V 按键。
如果文件夹为空,则列表视图为空。因此 PreviewKeyDown 处理程序不能被触发,作为 Lv_OnGotFocus 处理程序,在一个空文件夹中,而将文件复制到空文件夹意味着工作。
【问题讨论】: