gpt4 book ai didi

c# - ListView:从 ListViewItem 获取实际的项目对象

转载 作者:行者123 更新时间:2023-12-05 00:41:40 29 4
gpt4 key购买 nike

我正在向 ListView 添加我自己的类的项目( ListView 已适当设置绑定(bind)):

_listView.Items.Add(new ProblemsListItem());

我有一个 MouseDoubleClick 处理程序,它获取一个被点击的 ListViewItem:

void onProblemDoubleClick(object sender, MouseButtonEventArgs e)
{
ListViewItem item = FindVisualParent<ListViewItem, ListView>(e.OriginalSource as DependencyObject);
}

public static TParent FindVisualParent<TParent, TLimit>(DependencyObject obj) where TParent : DependencyObject
{
while (obj != null && !(obj is TParent))
{
if (obj is TLimit)
return null;
obj = VisualTreeHelper.GetParent(obj);
}
return obj as TParent;
}

我的问题是:如何将此 ListViewItem 转换为我的 ProblemsListItem 对象,或从项目中获取此对象?

我尝试从 ListViewItem 继承 ProblemsListItem。然后我当然可以在处理程序中将 item 转换为 ProblemsListItem 类型,但这完全破坏了 ListView:所有列都是空的,它没有被正确填充。

最佳答案

你可以使用ItemContainerGenerator来获取数据项:

var dataItem = yourListView.ItemContainerGenerator.ItemFromContainer(yourListViewItem);

但是这段代码有异味。我看不出有任何理由不使用数据绑定(bind),并将双击处理为执行 ICommand 实现。

关于c# - ListView:从 ListViewItem 获取实际的项目对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21967246/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com