wpf 获取 ControlTemplate 中的控件

如何获取这个里面的Grid?<!--ConnectorDecoratorTemplateDefaultTemplate--><ControlTemplatex:Key="... 如何获取这个里面的Grid?
<!-- ConnectorDecoratorTemplate Default Template -->
<ControlTemplate x:Key="ConnectorDecoratorTemplate" TargetType="{x:Type Control}" >

<Grid Margin="-5" x:Name="PART_Connector" IsHitTestVisible="True" >
<s:Connector x:Name="Left" Orientation="Left" VerticalAlignment="Center" HorizontalAlignment="Left"/>
<!-- <s:Connector x:Name="Top" Orientation="Top" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<s:Connector x:Name="Right" Orientation="Right" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<s:Connector x:Name="Bottom" Orientation="Bottom" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>-->
</Grid>
</ControlTemplate>
展开
 我来答
_HappyEnding
2013-07-25 · TA获得超过830个赞
知道小有建树答主
回答量:633
采纳率:0%
帮助的人:277万
展开全部
 private DependencyObject FindParentControl<T>(DependencyObject control)
        {
            DependencyObject parent = VisualTreeHelper.GetParent(control);
            while (parent != null && !(parent is T))
            {
                parent = VisualTreeHelper.GetParent(parent);
            }
            return parent;
        }
        
        
        public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement
        {
            DependencyObject child = null;
            T grandChild = null;

            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
            {
                child = VisualTreeHelper.GetChild(obj, i);

                if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))
                {
                    return (T)child;
                }
                else
                {
                    grandChild = GetChildObject<T>(child, name);
                    if (grandChild != null)
                        return grandChild;
                }
            }

            return null;

        }

this maybe help you

找grid用GetChildObject这个方法,parentControl是这个模板应用的目标控件

Grid grid = GetChildObject<Grid>(parentControl, "PART_Connector

");

注意判断是否返回null

leiyangbdwk
2013-07-23 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4369万
展开全部
看你这个ControlTemplate是在xaml里面定义的,因此如果你需要根据事件等绑定属性,最好也在xaml里面实现,如果要在后台获得,还不如全用后台代码继承自control写控件。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幂而不宣
2013-07-26 · 超过14用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:36.9万
展开全部
整理一下你的设计思路
1.假如Grid要与外界有交互,则应把它写成一个控件<UserControl><Grid x:Name="YourGrid"/></UserControl>,然后在后台cs代码中注册依赖属性,链接到YourGrid
2.假如交互都只是在ControlTemplate中进行,则应定义<ControlTemplate>.<Triggers>
否则就打破了ControlTemplate对控件进行封装的本意.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mickal小米
2013-07-23 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1768万
展开全部
在ControlTemplate中找控件最重要的就是让控件初始化到visualtree上
给你个链接做参考
http://www.cnblogs.com/midcn/archive/2011/05/24/2055276.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式