当前位置:编程学习 > C#/ASP.NET >>

为什么这个例子,里面的border名字,有重复,也是可以的?

下面,有两个名字都为Border1的Border,为什么编译不会出错?是什么原因?



    <Window.Resources>

        <ControlTemplate x:Key="MyButton" TargetType="{x:Type Button}"> 
            <Grid>
                <Border Name="Border1"></Border>
                <ContentPresenter></ContentPresenter>
            </Grid> 
    </ControlTemplate>
    </Window.Resources>
    
    <Grid>
        <Button Name="Button1"  Template="{DynamicResource MyButton}" Foreground="Red">sdfsdf</Button>
        <Border Name="Border1"></Border>
    </Grid>
--------------------编程问答-------------------- 那个明明在Resource中嘛!

假设超时的广告上有个龙虾,你拿到了超市广告跟你实际拿到了一只龙虾一样吗?

那不过是一个模板定义,其中的Border1跟你实际的命名为Border1的对象是两回事。 --------------------编程问答-------------------- 模板跟其实例化是不一样的。当它被实例化之后,就好象你在另外一个用户控件中使用border1命名一样,那是允许的。 --------------------编程问答-------------------- 你在2楼的比喻是很恰当。

但是,如果实例化后呢?感觉还是有点乱。


例如,再举个例子,下面里子,为什么后代中调用的时候,是this.Border2?为什么不是this.Border1.Border2?


<Grid>
        <Button Name="Button1"  Template="{DynamicResource MyButton}" Foreground="Red">sdfsdf</Button>
        <Border Name="Border1">
             <Border Name="Border2">
             </Border>
        </Border>
</Grid>





引用 2 楼  的回复:
模板跟其实例化是不一样的。当它被实例化之后,就好象你在另外一个用户控件中使用border1命名一样,那是允许的。
--------------------编程问答-------------------- 讨论这个干什么啊 --------------------编程问答-------------------- 呵呵。
我只是在命名的时候,感觉有点乱。



引用 4 楼  的回复:
讨论这个干什么啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,