Bahasa

VisualStateManager.VisualStateGroups Properti Terlampir

Definisi

Mendapatkan atau mengatur kumpulan VisualStateGroup objek.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Contoh

Contoh berikut membuat sederhana ControlTemplate untuk yang Button berisi satu Grid. Ini juga berisi nama VisualStateGroupCommonStates, yang mendefinisikan status MouseOver dan Normal . juga VisualStateGroup memiliki VisualTransition yang menentukan bahwa dibutuhkan satu setengah detik untuk Grid mengubah dari hijau ke merah ketika pengguna memindahkan penunjuk mouse di Buttonatas .

<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>

Keterangan

Masing-masing VisualStateGroup berisi kumpulan VisualState objek. VisualState Berisi kumpulan Storyboard objek yang menentukan bagaimana tampilan kontrol berubah saat kontrol berada dalam status tertentu. Misalnya, mungkin memiliki penampilan yang Button sedikit berbeda ketika ditekan daripada ketika tidak ditekan. Dua menyatakan bahwa Button definisi sesuai dengan ketika ditekan ("Pressed") dan ketika tidak ("Normal").

Anda menambahkan VisualState ke kontrol dengan mengatur VisualStateGroups properti terlampir pada kontrol. Anda menempatkan status yang saling eksklusif satu sama lain dalam hal yang sama VisualStateGroup. Misalnya, memiliki CheckBox dua VisualStateGroup objek. Satu berisi status, Normal, MouseOver, Pressed, dan Disabled. Yang lain berisi status, Checked, UnChecked, dan Indeterminate. CheckBox dapat berada di negara bagian MouseOver dan UnChecked pada saat yang sama, tetapi tidak dapat berada di MouseOver negara bagian dan Pressed pada saat yang sama.

Meskipun Anda dapat menambahkan VisualState objek ke elemen apa pun, objek tersebut adalah cara yang sangat berguna untuk memungkinkan orang lain menentukan ulang perilaku visual dari Control. Jika Anda membuat kontrol kustom yang menggunakan ControlTemplate, Anda dapat menentukan status mana yang dapat dikontrol dengan menambahkan TemplateVisualStateAttribute pada definisi kelasnya. Kemudian siapa pun yang membuat baru ControlTemplate untuk kontrol Anda dapat menambahkan VisualState objek ke templat. Status dengan yang sama System.Windows.TemplateVisualStateAttribute.GroupName termasuk dalam yang sama VisualStateGroup.

Untuk informasi selengkapnya tentang cara menggunakan VisualStateGroup objek dalam ControlTemplate, lihat Cara membuat templat untuk kontrol. Untuk informasi selengkapnya tentang cara membuat kontrol yang menggunakan VisualStateManager, lihat Membuat Kontrol yang Memiliki Tampilan yang Dapat Disesuaikan.

Berlaku untuk