Как изменить визуальное состояние шаблона ControlTemplate без его замены? - PullRequest
3 голосов
/ 31 октября 2009

Я хочу определить ToggleButton, который отображается с красным передним планом (например), когда отмечен, а не внешний вид нажатой кнопки по умолчанию.

Я вижу, что визуальные состояния поддерживаются как именованные элементы внутри ToggleButton 'ControlTemplate.

Какой самый простой способ заменить / удалить / настроить визуальное состояние БЕЗ переопределения всего шаблона?

Ответы [ 2 ]

1 голос
/ 11 января 2010

Я понимаю, что уже очень поздно, но я столкнулся с той же проблемой и сам нашел решение, так что, надеюсь, это кому-нибудь пригодится.

После того, как шаблон был применен к элементу управления (после первого цикла измерения / отображения), вы можете получить доступ к созданному шаблону и его дочерним компонентам просто с помощью VisualTreeHelper.GetChild (myToggleButton, 0) - это вернет корневой объект визуального объекта созданного шаблона дерево, из которого вы можете добавлять / удалять / изменять дочерние объекты в его коллекции Children.

Очевидно, что вы изменяете только визуальное состояние этого экземпляра элемента управления, а не самого ресурса шаблона, поэтому новые элементы управления, созданные из этого шаблона, будут по-прежнему иметь первоначальный визуальный вид.

Мой вопрос по этому вопросу здесь: Как заменить часть ControlTemplate во время выполнения в Silverlight 3?

0 голосов
/ 14 ноября 2009

Вы пытались создать свой собственный ControlTemplate и установить для параметра BasedOn значение Standard, а затем изменили только то, что вам нужно?

...