簡體   English   中英

WPF獲取所有控件的“內容”

[英]WPF get all Controls “Content”

如果WPF控件具有Content-Variable,將如何檢查?

我正在使用此代碼遍歷所有控件:

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

您可能會為每個Control-Type進行以下操作:

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

但這很臟,還有其他可能性嗎?

最簡單的方法是檢查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屬性是否存在,但這比較慢且麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM