wpf由于大量使用模板,有时模板内的控件名称会不太方便查找,这时需要借助VisualTreeHelper和递归。
public static T FindChild<T>(DependencyObject parent, string childName)where T : DependencyObject
{
if (parent == null) return null;
T foundChild = null;
int childrenCount = VisualTreeHelperGetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelperGetChild(parent, i);
// 如果子控件不是需查找的控件类型
T childType = child as T;
if (childType == null)
{
// 在下一级控件中递归查找
foundChild = FindChild<T>(child, childName);
// 找到控件就可以中断递归 *** 作
if (foundChild != null) break;
}
else if (!stringIsNullOrEmpty(childName))
{
var frameworkElement = child as FrameworkElement;
// 如果控件名称符合参数条件
if (frameworkElement != null && frameworkElementName == childName)
{
foundChild = (T)child;
break;
}
}
else
{
// 查找到了控件
foundChild = (T)child;
break;
}
}
return foundChild;
}
调用方法是这样的:
TextBox foundTextBox =UIHelperFindChild<TextBox>(ApplicationCurrentMainWindow, "myTextBoxName");
1,模糊查询、查询出所有来然后循环判断!
2,(控件类型)gridviewrows[行的索引]findcontrol("控件名称");
上例中:
Label lab1=(Label)GridView1Rows[0]FindControl("Label1");
lab1Text="测试成功";
补充:
没有什么函数吧!
直接select from tablName like %b%
检查查询出的结构如果行数>0则表示存在!
非要写函数就自己写一个吧!估计实质还是like模糊查询!
楼上说的不完全正确,documentgetElementsByTagName("input")获取的是所有<input>对象,里面包含text、password等等,
其实在其后再加一个类型判断就行了:
var inputObject = documentgetElementsByTagName("input");
for (var i=0; i<inputObjectlength; i++){
if ("text" == inputObject[i]type){
//相关 *** 作
}
}
以上就是关于wpf中怎么查找控件啊全部的内容,包括:wpf中怎么查找控件啊、如何判断一个字段中是否存在某字。 如何获取GridView中的控件、JS怎么获取父页面的所以相同类型的的控件(相同类型的控件id 和 name 都不相同)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)