C# “WPF获取所有控制”;内容“;
如果WPF控件具有内容变量,将如何检查 我正在使用以下代码遍历所有控件:C# “WPF获取所有控制”;内容“;,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,如果WPF控件具有内容变量,将如何检查 我正在使用以下代码遍历所有控件: public void Translate(Visual myVisual) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++) { // Retrieve child visual at specified index value. Visual childVisual = (
public void Translate(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
//How can I check wether childVisual has a Content-Variable or hasn't?
//So check if this: childVisual.Content is existing
// Enumerate children of the child visual object.
Translate(childVisual);
}
}
但是这是肮脏的,还有其他的可能性吗?最简单的方法是检查您的
视觉
是否是内容控件。通常,所有具有Content
属性的WPF控件都派生自ContentControl
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
//How can I check whether childVisual has a Content-Variable or hasn't?
var childContentVisual = childVisual as ContentControl;
if(childContentVisual != null)
{
var content = childContentVisual.Content;
...
}
// Enumerate children of the child visual object.
Translate(childVisual);
}
for(int i=0;i
您也可以使用反射来查看内容属性是否存在,但这样做会更慢、更麻烦。谢谢!不知道这个类存在。解决了的
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
//How can I check whether childVisual has a Content-Variable or hasn't?
var childContentVisual = childVisual as ContentControl;
if(childContentVisual != null)
{
var content = childContentVisual.Content;
...
}
// Enumerate children of the child visual object.
Translate(childVisual);
}