2010-01-13 15 views
5

He creado un control personalizado que amplía el control de contenido. Dentro de esto tengo un modelo de piezas y estados que funciona bien.Visual State Manager en Custom Control

entonces utilizar esto como la raíz de mi xaml (colocar el código en la carpeta de plantillas en Blend)

Todo funciona bien, puedo abrir un nuevo 'DaveControl' y obtener la funcionalidad que quiero.

Sin embargo, si agrego algunos estados visuales aquí, como alertOnScreen y trato de usar el visualstatemanager, no funciona.

de hecho no hay estados enumerados.

¡El comportamiento en SL3 GotoVisualState funciona bien sin embargo!

¿Cómo puedo hacer que el estado visual funcione en el código?

+0

Al examinar el comportamiento, toma un elemento de marco en lugar de un control. Esto funciona. – DavidA

Respuesta

1

¿Ha agregado el conjunto de estados disponibles como un conjunto de atributos TemplateVisualState en la clase? Blend los utiliza para configurar su lista de estados disponibles.

Su clase debe mirar generalmente como esto: -

[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")] 
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")] 
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")] 
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")] 
[TemplatePart(...)] 
[TemplatePart(...)] 
public class MyControl : ContentControl 
+0

Anthony, Los estados visuales para el control funcionan. El control es básicamente un contenedor personalizado ... Lo uso como el elemento raíz en mi archivo xaml-> Nuevo Dave Control (de esa manera puedo derivar de la clase sin el problema de clase parcial). Ahora diga que este control tiene un botón en 'Agregar dirección' que requiere algo para moverse en el escenario, personalizado para esta instancia ... de ahí mi problema. Gracias por la respuesta, con el título estoy seguro de que ayudará a alguien. – DavidA