Aracılığıyla paylaş


VisualStateManager.VisualStateGroups İliştirilmiş Özellik

Tanım

Nesne koleksiyonunu VisualStateGroup alır veya ayarlar.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Örnekler

Aşağıdaki örnek, içeren bir Button için basit ControlTemplate bir Gridoluşturur. Ayrıca ve Normal durumlarını MouseOver tanımlayan adlandırılmış CommonStatesbir VisualStateGroup içerir. ayrıcaVisualStateGroup, kullanıcı fare işaretçisini üzerinde hareket ettiğinde yeşilden kırmızıya değişmesinin Grid yarım saniye sürdüğünü belirten bir VisualTransition de vardırButton.

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

Açıklamalar

Her VisualStateGroup biri bir nesne koleksiyonu VisualState içerir. , VisualState denetim belirli bir durumdayken denetimin görünümünün nasıl değiştiğini belirten bir nesne koleksiyonu Storyboard içerir. Örneğin, basıldığında Button , basılmadığından biraz farklı bir görünüme sahip olabilir. öğesini tanımlayan Button iki durum, basıldığında ("Pressed") ve ( değilken"Normal") karşılık gelir.

Denetimde ekli özelliği ayarlayarak VisualStateGroups denetime eklersinizVisualState. Birbirini dışlayan durumları aynı VisualStateGroupiçine koyarsınız. Örneğin, iki CheckBox VisualStateGroup nesnesi vardır. Bunlardan biri, , Normal, MouseOver``Pressedve Disableddurumlarını içerir. Diğeri, , UnCheckedve Indeterminatedurumlarını Checkediçerir. durumlarında CheckBox MouseOver ve UnChecked aynı anda olabilir, ancak ve Pressed durumlarında MouseOver aynı anda olamaz.

Herhangi bir öğeye nesne ekleyebilmenize VisualState rağmen, diğer kişilerin bir öğesinin görsel davranışını yeniden tanımlamasını sağlamanın özellikle yararlı bir Controlyoludur. kullanan ControlTemplatebir özel denetim oluşturursanız, sınıf tanımına bir TemplateVisualStateAttribute ekleyerek denetimin hangi durumlarda bulunabileceğini belirtebilirsiniz. Ardından, denetiminiz için yeni ControlTemplate bir oluşturan herkes şablona nesne ekleyebilir VisualState . Aynı olan durumlar aynı System.Windows.TemplateVisualStateAttribute.GroupName VisualStateGroupöğesine aittir.

içindeki nesnelerin nasıl kullanılacağı VisualStateGroup hakkında daha fazla bilgi için bkz. Bir ControlTemplate Oluşturarak Varolan Denetimin Görünümünü Özelleştirme.ControlTemplate kullanan VisualStateManagerdenetimlerin nasıl oluşturulacağı hakkında daha fazla bilgi için bkz. Özelleştirilebilir Bir Görünüme Sahip Denetim Oluşturma.

Şunlara uygulanır