VisualStateManager.VisualStateGroups Właściwość dołączona

Definicja

Pobiera lub ustawia kolekcję VisualStateGroup obiektów.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Przykłady

Poniższy przykład umożliwia utworzenie prostego ControlTemplate elementu zawierającego Button element Grid. Zawiera VisualStateGroup również nazwę CommonStates, która definiuje MouseOver stany i Normal . Element VisualStateGroup ma również wartość określającą VisualTransition , że zmiana z kolorem zielonym na czerwony trwa jedną połowę sekundy Grid , gdy użytkownik przesuwa wskaźnik myszy nad elementem 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>

Uwagi

Każda z nich VisualStateGroup zawiera kolekcję VisualState obiektów. Element VisualState zawiera kolekcję Storyboard obiektów, które określają sposób zmiany wyglądu kontrolki, gdy kontrolka jest w określonym stanie. Na przykład element Button może mieć nieco inny wygląd, gdy jest on naciskany niż wtedy, gdy nie jest naciskany. Dwa stany, które Button definiują, odpowiadają, gdy jest on naciśnięty ("Pressed") i gdy nie jest ("Normal").

VisualState Dodasz do kontrolki, ustawiając dołączoną VisualStateGroups właściwość w kontrolce. Umieszczasz stany, które wzajemnie się wykluczają w tym samym VisualStateGroupobiekcie . Na przykład obiekt CheckBox ma dwa VisualStateGroup obiekty. Jeden zawiera stany, Normal, MouseOver, Pressedi Disabled. Druga zawiera stany, Checked, UnCheckedi Indeterminate. Może CheckBox być w stanach MouseOver i UnChecked jednocześnie, ale nie może być w MouseOver stanach i Pressed w tym samym czasie.

Chociaż można dodawać VisualState obiekty do dowolnego elementu, są one szczególnie przydatnym sposobem na ponowne zdefiniowanie zachowania wizualnego elementu Control. Jeśli tworzysz niestandardową kontrolkę używającą klasy ControlTemplate, możesz określić stany, w których może znajdować się kontrolka, dodając definicję TemplateVisualStateAttribute klasy. Następnie każda osoba tworząca nową ControlTemplate kontrolkę może dodawać VisualState obiekty do szablonu. Stany o tej samej System.Windows.TemplateVisualStateAttribute.GroupName własności należą do tego samego VisualStateGroup.

Aby uzyskać więcej informacji na temat używania VisualStateGroup obiektów w elemecie ControlTemplate, zobacz Dostosowywanie wyglądu istniejącej kontrolki przez tworzenie kontrolkiTemplate. Aby uzyskać więcej informacji na temat tworzenia kontrolek korzystających z elementu VisualStateManager, zobacz Tworzenie kontrolki, która ma dostosowywalny wygląd.

Dotyczy