OnApplyTemplate()执行顺序的问题

sftl25789 2011-01-11 04:39:46
自定义一个silverlight类库,通过ControlTemplate定义其外观
public class CCXpsReader : System.Windows.Controls.Control
{
public myElement()
{
this.DefaultStyleKey = typeof(myElement);
}

public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
}

通过重写OnApplyTemplate()后就可以通过GetTemplateChild方法获取模板里的子控件了,但是OnApplyTemplate的执行顺序有问题,当类的构造函数执行后,并不是立即执行OnApplyTemplate方法,而是延迟了一定的时间,而且如果这个自定义的控件在放到应用的项目中时如果Visibility为隐藏的话,更是不会执行OnApplyTemplate方法了。
我希望能够在执行构造函数的时候就能立即执行OnApplyTemplate方法,以便能够调用模板里的子控件和初始化一些私有变量,请问有没有解决方法呀?
网上找到过一个解决方案(搜索关键词是令人懊恼的OnApplyTemplate问题),但是我感觉这个的效率可能会比较慢(我没
有测试过效率,实验的时候出错了),我想知道有没有其他的解决方法。
...全文
1478 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜗牛水里爬 2011-01-13
  • 打赏
  • 举报
回复
这个就不是问题,我的怎么就没你说的问题
是在不行 你就重写Visibility属性
然后再写它的回调函数
继而再你的回调函数中执行OnApplyTemplate()方法
sftl25789 2011-01-12
  • 打赏
  • 举报
回复
能不能通过给类加特性的方式声明模板?
有人试过么?
sftl25789 2011-01-11
  • 打赏
  • 举报
回复
TO:jimmy_xiao0010
我是要在silverlight类库里的构造函数里就能应用模板,也就是在构造函数里就要先运行OnApplyTemplate。
不是在正式的项目中。
helloWorld1209 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 sftl25789 的回复:]
我希望能够在执行构造函数的时候就能立即执行OnApplyTemplate方法,以便能够调用模板里的子控件和初始化一些私有变量,请问有没有解决方法呀?
[/Quote]

把你想先初始化的子控件的实例化(即:A a = new A(); 然后你调用a.XX 拿到你要的属性)
放在构造方法里的InitializeComponent();之前。

这个你试过没
sftl25789 2011-01-11
  • 打赏
  • 举报
回复
不行,我试过好多方法,这个是其中一个,也会有问题
helloWorld1209 2011-01-11
  • 打赏
  • 举报
回复
在构造方法里直接执行你重写的OnApplyTemplate()呢

UI会变一下是么

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧