silverlight中如何获取Template中的元素

来源:百度知道 编辑:UC知道 时间:2024/05/12 20:44:58
请问我在写button样式中包含了Template属性,而button的颜色是由Template中嵌套的一个Rectangle的填充色实现的。我现在想在后台代码中找到这个Rectangle,可以吗?如果可以的话,用什么方法实现呢?
加Name标识是自然的,我是说加了以后,在后台代码中不知道用什么方法能够找到这个Rectangle。 这些浅显的方法我早用过了~~~都行不通!!!
看完第二个意见后,先在此说声谢谢。
我是这样写的,但是却没有找到我的Rectangle
public class findRectangle : Button
{
public findRectangle (){

}

public object GetChildControl(string name)
{
return this.GetTemplateChild(name);
}
}
调用: findRectangle rect = new findRectangle();
object obj = rect.GetChildControl("myrectangle");
备注:myrectangle是给Rectangle的Name值。
这样写,但是当我调试的时候,obj的值却是空的,不知道是为什么?

如果这个Template也是在本xaml页里定义的,那么给Rectangle加x:Name="rtg"
后台里可以通过这个名称去访问

this.rtg.属性这样不行?

要想获取template里面的元素,必须重新一个控件类继承它原来的那个类
比如:
public class MyButton:Button
{
}
因为原来那个类里面有个方法叫GetTemplateChild(string name),而这个方法是protected的,所以你要在现在这个新的类里面添加一个公有方法用于返回结果
比如:
public object GetChildControl(string name)
{
return this.GetTemplateChild(name);
}

就OK啦~~