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}" ...>