我将自己的类的项目添加到ListView(列表视图已适当设置绑定):
_listView.Items.Add(new ProblemsListItem());
Run Code Online (Sandbox Code Playgroud)
我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何将其转换ListViewItem为我的ProblemsListItem对象,或从项目中获取该对象?
我尝试过继承ProblemsListItem自ListViewItem. 当然,我可以在处理程序中转换item为ProblemsListItem类型,但这完全破坏了 ListView:所有列都是空的,没有正确填充。
您可以使用ItemContainerGenerator来获取数据项:
var dataItem = yourListView.ItemContainerGenerator.ItemFromContainer(yourListViewItem);
Run Code Online (Sandbox Code Playgroud)
但这段代码有味道。我看不出有任何理由不使用数据绑定,并在执行执行时处理双击ICommand。
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |