2014-05-19 117 views
0

如何檢查WPF控件是否具有內容變量?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); 
    } 
} 

你propably coud做每一個控制型如下:

if(visualChild is CheckBox) 
    //cast it to CheckBox etc. 

但是,這是骯髒的,沒有任何其他可能性?

回答

0

最簡單的方法是檢查您的Visual是否爲ContentControl。通常,具有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); 
} 

您也可以使用反射來查看Content屬性是否存在,但這樣會更慢,更麻煩。

+0

謝謝!不知道這個類是否存在。解決了 –