我想定义一个ToggleButton,它在选中时带有红色前景(例如),而不是按下按钮的默认外观。

我看到视觉状态被保持为ToggleButtonControlTemplate中的命名元素。

在不重新定义整个模板的情况下,替换/删除/自定义视觉状态的最简单方法是什么?

最佳答案

我意识到这已经很晚了,但是我只是遇到了同样的问题,自己想出了解决方案,因此希望这对某人有用。

将模板应用于控件后(在第一个测量/显示周期之后),您只需使用VisualTreeHelper.GetChild (myToggleButton, 0)即可访问实例化模板及其子组件-这将返回实例化模板可视化树的根对象,从您可以在其“子级”集合中添加/删除/修改子级对象。

显然,您只是在更改控件实例的视觉状态,而不是模板资源本身,因此从同一模板创建的新控件仍将具有原始外观。

我在这个问题上的实际问题在这里:How do I replace a ControlTemplate part at runtime, in Silverlight 3?

10-08 17:05