Skip to main content
 首页 » 编程设计

wpf之如何获得 ContentPresenter 的 child

2024年12月31日12zhwl

使用代码我可以获得内容演示者。我想找到其中的第一个文本框并相应地设置焦点。

Dim obj = TerritoryListViewer.ItemContainerGenerator.ContainerFromItem(myModel) 

请您参考如下方法:

您可以使用 VisualTreeHelper用于抓取控件树的静态类。
这就是它在 c# 中的实现方式(对不起,我是 VB 阅读障碍))

 T FindFirstChild<T>(FrameworkElement element) where T: FrameworkElement 
    { 
        int childrenCount = VisualTreeHelper.GetChildrenCount(element); 
        var children = new FrameworkElement[childrenCount]; 
 
        for (int i = 0; i < childrenCount; i++) 
        { 
            var child = VisualTreeHelper.GetChild(element, i) as FrameworkElement; 
            children[i] = child; 
            if (child is T) 
                return (T)child; 
        } 
 
        for (int i = 0; i < childrenCount; i++) 
            if (children[i] != null) 
            { 
                var subChild = FindFirstChild<T>(children[i]); 
                if (subChild != null) 
                    return subChild; 
            } 
 
        return null; 
    }