【问题标题】:How to alter a visual state of a ControlTemplate without replacing it?如何更改 ControlTemplate 的视觉状态而不替换它?
【发布时间】:2009-10-31 18:12:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf user-interface controltemplate visualstatemanager visualstates


    【解决方案1】:

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

    在模板应用到控件后(在第一个测量/显示循环之后),您可以简单地使用VisualTreeHelper.GetChild (myToggleButton, 0) 访问实例化模板及其子组件 - 这将返回实例化模板视觉对象的根对象树,您可以从中添加/删除/修改其 Children 集合中的子对象。

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

    我关于这个主题的问题在这里:How do I replace a ControlTemplate part at runtime, in Silverlight 3?

    【讨论】:

    • 这很酷,我想要一个 XAML 解决方案,但是,不管怎样都行。
    【解决方案2】:

    您是否尝试过创建自己的ControlTemplate 并将BasedOn 参数设置为标准,然后只更改您需要的内容?

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多