VisualStateManager.VisualStateGroups Proprietà associata

Definizione

Ottiene o imposta una raccolta di oggetti VisualStateGroup.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Esempio

Nell'esempio seguente viene creato un oggetto semplice ControlTemplate per un Button oggetto contenente un oggetto Grid. Contiene anche un VisualStateGroup denominato CommonStates, che definisce gli MouseOver stati e Normal . Dispone VisualStateGroup inoltre di un VisualTransition oggetto che specifica che il passaggio da verde a rosso richiede metà secondi Grid quando l'utente sposta il puntatore del mouse su 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>

Commenti

Ogni VisualStateGroup oggetto contiene una raccolta di VisualState oggetti . Un VisualState oggetto contiene una raccolta di Storyboard oggetti che specificano il modo in cui l'aspetto del controllo cambia quando il controllo è in un determinato stato. Ad esempio, un Button oggetto potrebbe avere un aspetto leggermente diverso quando viene premuto rispetto a quando non viene premuto. Due stati che Button definiscono corrispondono a quando viene premuto ("Pressed") e quando non è ("Normal").

Si aggiunge VisualState a un controllo impostando la VisualStateGroups proprietà associata sul controllo . Si inseriscono gli stati che si escludono reciprocamente tra loro nello stesso VisualStateGroup. Ad esempio, l'oggetto CheckBox ha due VisualStateGroup oggetti . Uno contiene gli stati, Normal, MouseOver, Pressede Disabled. L'altro contiene gli stati, Checked, UnCheckede Indeterminate. Può CheckBox essere in stati MouseOver e UnChecked allo stesso tempo, ma non può trovarsi nello MouseOver stesso stato e Pressed .

Sebbene sia possibile aggiungere VisualState oggetti a qualsiasi elemento, sono un modo particolarmente utile per consentire ad altri utenti di ridefinire il comportamento visivo di un oggetto Control. Se si crea un controllo personalizzato che usa un ControlTemplateoggetto , è possibile specificare gli stati in cui il controllo può trovarsi aggiungendo un oggetto TemplateVisualStateAttribute nella relativa definizione di classe. Chiunque crei quindi un nuovo ControlTemplate oggetto per il controllo può aggiungere VisualState oggetti al modello. Gli stati con lo stesso System.Windows.TemplateVisualStateAttribute.GroupName appartengono allo stesso VisualStateGroupoggetto .

Per altre informazioni su come usare VisualStateGroup gli oggetti in un ControlTemplateoggetto , vedere Personalizzazione dell'aspetto di un controllo esistente mediante la creazione di un oggetto ControlTemplate. Per altre informazioni su come creare controlli che usano VisualStateManager, vedere Creazione di un controllo con un aspetto personalizzabile.

Si applica a