这可能与this或this问题重复。但我的问题是如何处理获得的ListViewItem
?
我已经像这样设置了ListView
绑定
<ListView ItemsSource="{Binding Data}" ...>
,其中
public ObservableCollection<Item> Data { ... }
如何获取Item
(来自ListViewItem
)?
我尝试使用mvvm并绑定当前与鼠标一致的项目,类似于this。但后来我发现了更多:
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!-- this will not work -->
<Setter Property="{Binding MouseoveredItem, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" Value="{Binding RelativeSource={RelativeSource Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
我的意图是否明确?如何获得鼠标操作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
}
}
我可以找到ListViewItem
,但我需要鼠标覆盖Item
的属性,这些属性显示为SubItems
或隐藏。如何将ListViewItem
(Item
的直观视图)转换为Item
(此ListViewItem
代表哪个)?
答案 0 :(得分:1)
当你得到&#34; ListView项目&#34;属性&#34; DataContext&#34;它将返回你的&#34;项目&#34;。
答案 1 :(得分:-1)
在ViewModel中使用它:
public ObservableCollection<Item> Data { ... }
public Item SelectedData { get; set; }
在你的视图中
<ListView ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedData}" ...>
当选择更改时,SelectedData属性也会更改。