VisualStateManager.VisualStateGroups Přidružená vlastnost

Definice

Získá nebo nastaví kolekci VisualStateGroup objektů.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Příklady

Následující příklad vytvoří jednoduchý ControlTemplate pro Button ten, který obsahuje jeden Grid. Obsahuje také pojmenovaný VisualStateGroup, CommonStates který definuje MouseOver a Normal stavy. Má VisualStateGroup také VisualTransition , který určuje, že trvá jednu půl sekundu Grid , než se změna ze zelené na červenou, když uživatel přesune ukazatel myši na 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>

Poznámky

Každý VisualStateGroup obsahuje kolekci VisualState objektů. A VisualState obsahuje kolekci Storyboard objektů, které určují, jak se vzhled ovládacího prvku změní, když je ovládací prvek v určitém stavu. Například může mít trochu jiný vzhled, Button když je stisknuto, než když není stisknuto. Dva stavy, že Button definice odpovídají, když je stisknuta ("Pressed") a kdy není ("Normal").

Do ovládacího prvku se přidá VisualState nastavením VisualStateGroups připojené vlastnosti ovládacího prvku. Dáváte stavy, které se vzájemně vylučují ve stejném VisualStateGroup. Například má CheckBox dva VisualStateGroup objekty. Jeden obsahuje stavy, Normal, MouseOver, Pressed, a Disabled. Druhý obsahuje stavy, Checked, UnChecked, a Indeterminate. Může CheckBox být ve stavech MouseOver a UnChecked současně, ale nemůže být ve stejnou dobu v MouseOver a Pressed ve státech.

I když můžete přidat VisualState objekty do libovolného prvku, jsou zvlášť užitečným způsobem, jak ostatním umožnit předefinovat vizuální chování objektu Control. Pokud vytvoříte vlastní ovládací prvek, který používá ControlTemplate, můžete určit, ve kterých stavech může být ovládací prvek, přidáním TemplateVisualStateAttribute jeho definice třídy. Každý, kdo pro váš ovládací prvek vytvoří nový ControlTemplate , pak může do šablony přidat VisualState objekty. Státy se stejnými System.Windows.TemplateVisualStateAttribute.GroupName patří do stejného VisualStateGroup.

Další informace o použití VisualStateGroup objektů v ovládacím ControlTemplateprvku naleznete v tématu Jak vytvořit šablonu pro ovládací prvek. Další informace o vytváření ovládacích prvků, které používají ovládací VisualStateManagerprvky , naleznete v tématu Vytvoření ovládacího prvku, který má přizpůsobitelný vzhled.

Platí pro