Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “WPF获取所有控制”;内容“;_C#_Wpf_Wpf Controls - Fatal编程技术网

C# “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 = (

如果WPF控件具有内容变量,将如何检查

我正在使用以下代码遍历所有控件:

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);
}