我想定义一个ToggleButton
,它在选中时带有红色前景(例如),而不是按下按钮的默认外观。
我看到视觉状态被保持为ToggleButton
的ControlTemplate
中的命名元素。
在不重新定义整个模板的情况下,替换/删除/自定义视觉状态的最简单方法是什么?
最佳答案
我意识到这已经很晚了,但是我只是遇到了同样的问题,自己想出了解决方案,因此希望这对某人有用。
将模板应用于控件后(在第一个测量/显示周期之后),您只需使用VisualTreeHelper.GetChild (myToggleButton, 0)
即可访问实例化模板及其子组件-这将返回实例化模板可视化树的根对象,从您可以在其“子级”集合中添加/删除/修改子级对象。
显然,您只是在更改控件实例的视觉状态,而不是模板资源本身,因此从同一模板创建的新控件仍将具有原始外观。
我在这个问题上的实际问题在这里:How do I replace a ControlTemplate part at runtime, in Silverlight 3?