Pergunta

Eu quero definir uma ToggleButton que aparece com plano vermelho (por exemplo) quando marcada, em vez da aparência padrão de um botão pressionado.

Eu vejo que os estados visuais são mantidos como elementos nomeados dentro ToggleButton do ControlTemplate.

O que é a maneira mais fácil de substituir / remover / personalizar um estado visual SEM redefinindo o modelo inteiro?

Foi útil?

Solução

Sei que isso é muito tarde, mas eu corri para o mesmo problema e descobriu a solução me, por isso espero que este será útil para alguém.

Depois que o modelo foi aplicado a um controle (após o primeiro ciclo de medida / display), você pode acessar o modelo instanciado e seus componentes filhos simplesmente usando VisualTreeHelper.GetChild (myToggleButton, 0) - o que irá retornar o objeto raiz da árvore visual do modelo instanciado, a partir do qual você pode adicionar / remover / modificar os objetos filho em sua coleção Crianças.

Obviamente você está mudando apenas o estado visual da que instância do controle, e não o próprio recurso modelo, assim que novos controles criados a partir do mesmo modelo ainda terá a aparência visual originais.

A minha pergunta realted sobre este assunto é aqui: Como faço para substituir uma parte ControlTemplate em tempo de execução, em Silverlight 3

Outras dicas

Você já tentou criar o seu próprio ControlTemplate e definir o parâmetro BasedOn a norma e, em seguida, só mudou o que você precisava?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top