Sdílet prostřednictvím


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 objekt pro objekt Button , který obsahuje jednu Grid. Obsahuje VisualStateGroup také s názvem CommonStates, který definuje MouseOver stavy a Normal . Má VisualStateGroup také parametr , VisualTransition který určuje, že změna ze zelené na červenou po přesunutí ukazatele myši na objekt trvá půl sekundy GridButton.

<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ů. Obsahuje VisualState 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 Button při stisknutí může objekt vypadat trochu jinak, než když nestisknete. Dva stavy, které definice odpovídají tomu, Button kdy je stisknuto ("Pressed") a když není ("Normal").

VisualState Přidání do ovládacího prvku nastavením VisualStateGroups připojené vlastnosti ovládacího prvku. Stavy, které se vzájemně vylučují, umístíte do stejného VisualStateGroup. Například objekt CheckBox má dva VisualStateGroup objekty. Jedna obsahuje stavy , Normal, MouseOverPresseda Disabled. Druhá obsahuje stavy , CheckedUnCheckeda Indeterminate. Objekt CheckBox může být ve stavech MouseOver a UnChecked ve stejnou dobu, ale nemůže být ve MouseOver stavech a Pressed současně.

I když můžete do libovolného prvku přidat VisualState objekty, představují zvlášť užitečný způsob, jak umožnit ostatním 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 se tento ovládací prvek může nacházet, přidáním TemplateVisualStateAttribute do 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 objektu ControlTemplatenaleznete v tématu Přizpůsobení vzhledu existujícího ovládacího prvku vytvořením controlTemplate. Další informace o vytváření ovládacích prvků, které používají , najdete v VisualStateManagertématu Vytvoření ovládacího prvku, který má přizpůsobitelný vzhled.

Platí pro