在ControlTemplates中访问UserControl(Silverlight)

时间:2008-11-24 13:53:29

标签: silverlight

我正在尝试创建滑块的拉皮条版本,该滑块在“拇指”部分中具有用户控件(意思是:滑块上移动的东西),它对滑块的移动作出反应。基本上我当前的演示/开发版本只是一个具有5种视觉状态的UserControl,它只是让它在5个阶段中将笑脸变成愤怒的脸。我想把那个用户控件放到拇指上。

我唯一的问题如下:通过在Expression Blend中编辑Slider-control的模板,我可以将UserControl放到拇指中没问题。但是,一旦UserControl在ControlTemplate中,它就不再对新用户控件类可见,因此不能使用VisualStateManager进行更改。

所以基本上,我的问题是双重的:

  1. 有没有更好的方法来替换Slider-control的拇指而不是编辑它的模板?

  2. 如果没有,我如何访问我添加到模板中的内容?

  3. 感谢您的回答!

2 个答案:

答案 0 :(得分:1)

我在回答自己。在浏览了互联网上的每一页后,我终于找到了自己的解决方案!

我在ControlTemplate中为我的控件添加了一个Loaded事件处理程序,在该事件处理程序中,我为实际的类引用了该控件!之后,我能够使用该引用引用该控件,例如,visualstate更改就像一个魅力!

我现在有一个跳跃的滑块,手柄部分有笑脸,笑脸上的脸部相对于滑块的位置发生变化!非常酷!

答案 1 :(得分:0)

我从不同的角度来看它: 您可以覆盖OnApplyTemplate()并使用GetTemplateChild方法获取您的引用。它在某种程度上感觉更干净