C# 获取ListViewItem子项
是否有方法访问C# 获取ListViewItem子项,c#,wpf,C#,Wpf,是否有方法访问TextBox控件并获取其Text属性 迈克尔给了我答案: 这是FindVisualChild方法: ListViewItem lvi = lvPayload.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem; 是的,但首先需要给它一个名称属性。命名后,您可以执行以下操作: ListViewItem lvi = lvPayload.ItemContainerGenerator.ContainerFromInd
TextBox
控件并获取其Text
属性
迈克尔给了我答案:
这是FindVisualChild
方法:
ListViewItem lvi = lvPayload.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem;
是的,但首先需要给它一个
名称
属性。命名后,您可以执行以下操作:
ListViewItem lvi = lvPayload.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem;
// Getting the ContentPresenter of lvi
var cp = FindVisualChild<ContentPresenter>(lvi);
// Finding textBlock from the DataTemplate that is set on that ContentPresenter
var dtmpl = cp.ContentTemplate as DataTemplate;
var tb = (TextBox)dtmpl.FindName("myTb", cp);
//获取lvi的ContentPresenter
var cp=FindVisualChild(lvi);
//从在该ContentPresenter上设置的DataTemplate中查找textBlock
var dt=cp.ContentTemplate作为数据模板;
var tb=(TextBox)dt.FindName(“{name}”,cp);
谢谢,但FindVisualChild方法是什么?
public static T FindVisualChild<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
return (T)child;
}
T childItem = FindVisualChild<T>(child);
if (childItem != null) return childItem;
}
}
return null;
}
ListViewItem lvi = lvPayload.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem;
// Getting the ContentPresenter of lvi
var cp = FindVisualChild<ContentPresenter>(lvi);
// Finding textBlock from the DataTemplate that is set on that ContentPresenter
var dtmpl = cp.ContentTemplate as DataTemplate;
var tb = (TextBox)dtmpl.FindName("myTb", cp);
// Getting the ContentPresenter of lvi
var cp = FindVisualChild<ContentPresenter>(lvi);
// Finding textBlock from the DataTemplate that is set on that ContentPresenter
var dt = cp.ContentTemplate as DataTemplate;
var tb = (TextBox)dt.FindName("{name}", cp);