VisualStateManager.VisualStateGroups Propiedad adjunta
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece una colección de objetos VisualStateGroup.
see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups
Ejemplos
En el ejemplo siguiente se crea un objeto simple ControlTemplate para un Button objeto que contiene uno Grid. También contiene un VisualStateGroup objeto denominado CommonStates
, que define los MouseOver
estados y Normal
.
VisualStateGroup También tiene un VisualTransition valor de tipo que especifica que tarda una mitad de segundo en Grid cambiar de verde a rojo cuando el usuario mueve el puntero del mouse sobre .Button
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to trasition to the MouseOver state.-->
<VisualTransition To="MouseOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
mouse is over the button.-->
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
Comentarios
Cada VisualStateGroup contiene una colección de VisualState objetos .
VisualState Contiene una colección de Storyboard objetos que especifican cómo cambia la apariencia del control cuando el control está en un estado determinado. Por ejemplo, un Button podría tener una apariencia ligeramente diferente cuando se presiona que cuando no se presiona. Dos estados a los Button que define corresponden cuando se presiona ("Pressed"
) y cuando no es ("Normal"
).
Para agregar VisualState a un control, establezca la VisualStateGroups propiedad adjunta en el control . Coloca estados que se excluyen mutuamente entre sí en el mismo VisualStateGroup. Por ejemplo, tiene CheckBox dos VisualStateGroup objetos. Uno contiene los estados , Normal
, MouseOver
, Pressed
y Disabled
. El otro contiene los estados , Checked
, UnChecked
y Indeterminate
.
CheckBox puede estar en estados MouseOver
y UnChecked
al mismo tiempo, pero no puede estar en los MouseOver
estados y Pressed
al mismo tiempo.
Aunque puede agregar VisualState objetos a cualquier elemento, son una manera especialmente útil de permitir que otros usuarios vuelvan a definir el comportamiento visual de un Control. Si crea un control personalizado que usa un ControlTemplate, puede especificar en qué estados puede estar el control agregando una TemplateVisualStateAttribute en su definición de clase. A continuación, cualquier persona que cree un nuevo ControlTemplate para el control puede agregar VisualState objetos a la plantilla. Los estados con el mismo System.Windows.TemplateVisualStateAttribute.GroupName pertenecen a la misma VisualStateGroup.
Para obtener más información sobre cómo usar VisualStateGroup objetos en , ControlTemplatevea Personalización de la apariencia de un control existente mediante la creación de un controlTemplate. Para obtener más información sobre cómo crear controles que usan VisualStateManager, vea Crear un control que tenga una apariencia personalizable.