如何获得 ContentPresenter 的孩子? [英] How do I get the Children of a ContentPresenter?

查看:25
本文介绍了如何获得 ContentPresenter 的孩子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Using the code I can get a content presenter. I would like to locate the first textbox inside it and set the focus accordingly.

Dim obj = TerritoryListViewer.ItemContainerGenerator.ContainerFromItem(myModel)

推荐答案

您可以使用 VisualTreeHelper 静态类来爬取控件树.这是如何在 c# 中完成的(对不起,我是 VB 阅读障碍))

You can use VisualTreeHelper static class to crawl controls tree. This is how it can be accomplished in c# (sorry I'm VB dyslexic))

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

这篇关于如何获得 ContentPresenter 的孩子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆