C# 在ListView中获取鼠标光标下的项目

C# 在ListView中获取鼠标光标下的项目,c#,wpf,listview,C#,Wpf,Listview,这可能看起来像重复的或问题。但我的问题是如何处理获取的ListViewItem 我已经这样设置了ListView绑定 <ListView ItemsSource="{Binding Data}" ...> 我的意图清楚吗?如何将鼠标放置在项目中 我不敢相信没有人做过这件事。下面是代码隐藏尝试(以说明我的问题): 我可以找到列表视图项,但我需要鼠标悬停项的属性,这些属性显示为子项或隐藏。如何将ListViewItem(项目的可视化视图)转换为Item(这是ListViewItem所

这可能看起来像重复的或问题。但我的问题是如何处理获取的
ListViewItem

我已经这样设置了
ListView
绑定

<ListView ItemsSource="{Binding Data}" ...>
我的意图清楚吗?如何将鼠标放置在
项目中


我不敢相信没有人做过这件事。下面是代码隐藏尝试(以说明我的问题):


我可以找到
列表视图项
,但我需要鼠标悬停
的属性,这些属性显示为
子项
或隐藏。如何将
ListViewItem
(项目的可视化视图)转换为
Item
(这是
ListViewItem
所代表的内容)?

在视图模型中使用此选项:

public ObservableCollection<Item> Data { ... }

public Item SelectedData { get; set; }
公共可观测收集数据{…}
公共项SelectedData{get;set;}
在你看来

<ListView ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedData}" ...>


当选择更改时,SelectedData属性也将更改。

当您获得“ListViewItem”时,其属性“DataContext”将返回您的“Item”

将鼠标移到
ListView
上不会更改选择。您是否在
ListView\u MouseMove
事件处理程序中尝试了
e.OriginalSource
,要做什么?它有
Microsoft.Windows.Themes.ListBoxChrome
类型,我应该如何使用它来获取
项目
?在
e.OriginalSource
上,您可以借助
VisualTreeHelper
向上遍历,您将到达该项目。@amolbvannavar,如何?我是否可以获得
项目
?我已经使用
VisualTreeHelper
进行了转换(请参见上一次编辑),但是我得到了您可以看到的
ListViewItem
(而不是
Item
)。请参阅此
private void ListView_MouseMove(object sender, MouseEventArgs e)
{
    var item = VisualTreeHelper.HitTest(listView, Mouse.GetPosition(listView)).VisualHit;
    // find ListViewItem (or null)
    while (item != null && !(item is ListViewItem))
        item = VisualTreeHelper.GetParent(item);
    if (item != null)
    {
        ... // item is ListViewItem, how to convert ListViewItem it to Item
    }
}
public ObservableCollection<Item> Data { ... }

public Item SelectedData { get; set; }
<ListView ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedData}" ...>